我有一个更大的 SQL,它产生与这个简化示例类似的输出:
SELECT
5 AS L0,
2 AS L1,
3 AS L2,
4 AS L3
FROM DUAL
当前输出是这一行:
| L0 | L1 | L2 | L3 |
| 5 | 2 | 3 | 4 |
所需的输出是此列:
| kind | value |
| 0 | 5 |
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |
我知道我可以通过联合选择 4 次来得到这个。 我正在寻求建议,如果 union 是我在这里能做的最好的,以及是否可以通过其他方式实现此输出。
我还找到了许多将列反转为行的示例,但在这里我正在寻找从行到列的反转。
最佳答案
请尝试 UnPIVOT:
SELECT substr(kind,2,1) AS kind,"value" FROM
(
SELECT
5 AS l0,
2 AS l1,
3 AS l2,
4 AS l3
FROM dual
)temp unpivot include NULLS ("value" FOR kind IN (l0, l1 , l2, l3));
反之:
SELECT *
FROM
(
SELECT Kind,
max(Value) Value
FROM table
GROUP BY Kind
) PIVOT ( max(Value) FOR Kind IN (L0, L1, L2, L3) );
假设您实际上有一个要查询的表。
关于sql - 反转行到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5301613/