将多列多行转换为Oracle中的一条记录

时间:2017-12-27 13:39:47

标签: sql oracle transpose

在Oracle SQL查询中,我们得到 40条 13列。我想合并所有这些记录到一列表示 1条记录中的 40 * 13 = 520 列。例如 - 具有少量记录的样本表

col1  col2  city  cntry  conti
1     abc   NYC   USA    NA
2     def   LON   UK     EU
3     xyz   DUB   UAE    ASIA

然后合并所有记录&进入一个记录然后它应该像下面一个 -

col1  col2  city  cntry  conti  col1  col2  city  cntry  conti  col1  col2  city  cntry  conti  
1     abc   NYC   USA    NA     2     def   LON   UK     EU     3     xyz   DUB   UAE    ASIA

1 个答案:

答案 0 :(得分:1)

如果列col1包含唯一值,则可以使用pivot

select * 
  from t
  pivot (max(col1) col1, max(col2) col2, max(city) city, max(cntry), max(conti) conti 
         for col1 in (1, 2, 3))

<强> SQLFiddle demo