我有以下表格格式:
ID | Key | Value
-- --- -----
1 A aa
2 B bb
3 A ay
4 C cc
5 B bx
6 C ct
我需要将此表格转换为以下格式:
输出:
A B C
--- --- ---
aa bb cc
ay bx ct
我在oracle 11g中查找了PIVOT函数,但输入表中的“Key”值不是一组固定的值,它们可以是任何值。 我也寻找其他类似的问题但我不确定如何编写查询。
任何帮助将不胜感激,谢谢!
编辑:
对于解决方案,我想执行以下查询,但它在IN子句的子查询中给出了错误。我不明白为什么会这样。
Select * from (Select Key, Value, Id from tableName
pivot (max(Value) for Key IN (SELECT distinct Key from tableName)));
谢谢!
答案 0 :(得分:1)
您可以按如下方式应用枢轴功能。
select * from
(select Key,Value from yourtable)
pivot(max(Value) for Key in ('A', 'B', 'C'));
pivot中的子查询仅与XML关键字一起使用
如下所示进行查询:
Select * from (Select Key, Value, Id from tableName)
pivot xml (max(Value) for Key IN (SELECT distinct Key from tableName));
答案 1 :(得分:1)
您可以使用动态sql,因为您已经说过密钥没有修复 为密钥创建一个字符串,这将对您有所帮助。将此字符串传递给您的枢轴函数,因为键在字符串中,这样可以帮助您。