代码之家  ›  专栏  ›  技术社区  ›  user8487380

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

  •  1
  • user8487380  · 技术社区  · 8 年前

    在Oracle SQL查询中,我们得到 40条记录 13列 . 我想 合并 所有这些记录 一列 方法 40 * 13 = 520 中的列 1条记录 . Eg-记录较少的样本表

    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 回复  |  直到 8 年前
        1
  •  1
  •   Ponder Stibbons    8 年前

    If列 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