【问题标题】:Pivot with prefixed column names in Oracle 11g在 Oracle 11g 中使用前缀列名进行透视
【发布时间】:2017-09-20 19:25:51
【问题描述】:

使用 Oracle 11g 我希望旋转下表

ID  PREFIX  VALUE1  VALUE2
1   C01_    123     AAA
1   C02_    456     BBB
1   C03_    789     CCC
2   C01_    123     AAA
2   C02_    456     BBB
3   C01_    123     AAA

ID  C01_VALUE1  C01_VALUE2  C02_VALUE1  C02_VALUE2  C03_VALUE1  C03_VALUE3
1   123         AAA         456         BBB         789         CCC
2   123         AAA         456         BBB         null        null
3   123         AAA         null        null        null        null

实际上有两个以上的值列。简而言之,我想找到一种使用前缀列来透视表前缀列名的方法。

【问题讨论】:

  • 不,除非您使用 XML 透视

标签: sql oracle11g


【解决方案1】:

这个请求似乎有点傻 - 你似乎关心列 NAMES,它总是可以在 SELECT 子句中更改。如果您希望它或多或少自动化,那么您可以执行以下操作:

select *
from   your_table
pivot  ( max(value1) as value1, max(value2) as value2
         for prefix in ('C01_' as C01, 'C02_' as C02, 'C03_' as C03)
       )
;

当您使用 PIVOT 子句进行透视时,如果您不更改 SELECT 中的列名,它们将是 IN 子句中的别名,后跟下划线,然后是您给出的别名PIVOT 中的聚合函数。下划线是自动添加的,因此您不应在任何别名中提供它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多