【问题标题】:Transpose Oracle table/data set转置 Oracle 表/数据集
【发布时间】:2019-09-10 19:10:04
【问题描述】:

我需要一些关于转置表格的输入/帮助:

Key | ATTR_NAME | ATTR_VALUE
1234|  SS_VALUE |  SENSITIVE 
1234|  XX_VALUE |   4456

转置后,我希望我的输出看起来像:

Key | SS_VALUE | XX_VALUE
1234| SENSITIVE|  4456

提前致谢,

【问题讨论】:

    标签: sql oracle pivot


    【解决方案1】:

    如果这只是大约 2 个 cols 转置,那么条件聚合可能会对您有所帮助 -

    SELECT Key
          ,MAX(CASE WHEN ATTR_NAME = 'SS_VALUE' THEN ATTR_VALUE END) SS_VALUE 
          ,MAX(CASE WHEN ATTR_NAME = 'XX_VALUE' THEN ATTR_VALUE END) XX_VALUE
    FROM T
    GROUP BY Key
    

    【讨论】:

      【解决方案2】:

      一种选择是使用包含 pivot 关键字的查询,因为您需要的是旋转:

      select *
        from
        ( select * from tab )
        pivot
        (
         max(attr_value) for attr_name in ( 'SS_VALUE' as ss_value, 'XX_VALUE' as xx_value )
        );
      

      Demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-08
        • 2014-03-22
        • 1970-01-01
        • 2012-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多