您好,我有一个表测试其结构如下:
**Testing**
PK C1 c2
---------------
1 v11 v12
2 v21 v23
3 v31 v32
现在我需要查询该表(测试),以便获得以下输出。
Pk Key value
---------------
1 c1 v11
1 c1 v12
2 c2 v21
2 c2 v22
3 c3 v31
3 c3 v32
Oracle 11g 中的 sql 查询可以实现这一点吗?11g 中的 PIVOT 功能是否可以实现?
不,这不能用PIVOT
, 但它can完成UNPIVOT:
SELECT
Pk,
"Key",
value
FROM Testing
UNPIVOT (
value FOR "Key" IN (C1, C2)
)
什么时候UNPIVOT
不可用,我经常像这样取消旋转:
SELECT
t.Pk,
x."Key",
CASE x."Key"
WHEN 'C1' THEN t.C1
WHEN 'C2' THEN t.C2
END AS value
FROM Testing t
CROSS JOIN (
SELECT 'C1' AS "Key" FROM DUAL UNION ALL
SELECT 'C2' FROM DUAL
) x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)