首页 > 解决方案 > 在没有任何聚合函数的情况下将列数据转换为行

问题描述

我有一张emp (empno, empname)这样的桌子:

empno empname
----------------
1      xxx
2      yyy
3      zzz
..    ....

等等。我见过一些查询,但他们使用的是 PIVOT/UNPIVOT,但如果有聚合函数。我不想使用聚合。

我想将列转换为行。

empno  1    2     3
-----------------------
empnam xxx  yyy   zzz

如何使用 SQL 在 Oracle 中执行此操作?

标签: sqloracleoracle11goracle10g

解决方案


您的选项几乎可以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;

推荐阅读