我有一张table emp (empno, empname) 这样地:
emp (empno, empname)
empno empname----------------1 xxx2 yyy3 zzz.. ....
empno empname
----------------
1 xxx
2 yyy
3 zzz
.. ....
等等。我见过一些查询,但它们使用pivot/unpivot,但如果有聚合函数。我不想使用聚合。我想把列转换成行。
empno 1 2 3-----------------------empnam xxx yyy zzz
empno 1 2 3
-----------------------
empnam xxx yyy zzz
如何在oracle中使用sql实现这一点?
h9a6wy2h1#
你的选择很有用 PIVOT 显式或使用透视查询,方法如下:
PIVOT
SELECT 'empnam' AS empno, MAX(CASE WHEN empno = 1 THEN empname END) AS "1", MAX(CASE WHEN empno = 2 THEN empname END) AS "2", MAX(CASE WHEN empno = 3 THEN empname END) AS "3"FROM yourTable;
SELECT
'empnam' AS empno,
MAX(CASE WHEN empno = 1 THEN empname END) AS "1",
MAX(CASE WHEN empno = 2 THEN empname END) AS "2",
MAX(CASE WHEN empno = 3 THEN empname END) AS "3"
FROM yourTable;
1条答案
按热度按时间h9a6wy2h1#
你的选择很有用
PIVOT
显式或使用透视查询,方法如下: