我有以下查询
SELECT 1, 2 FROM DUAL
我喜欢
之类的东西SELECT TRANSPOSE(SELECT 1, 2 FROM DUAL)
与
输出相同SELECT 1 FROM DUAL
UNION
SELECT 2 FROM DUAL
我希望用列交换行。
答案 0 :(得分:5)
假设这是Oracle 11,您可以使用UNPIVOT:
select no from
(SELECT 1 a, 2 b FROM DUAL) dummy
unpivot (no for col in (a as 'A', b as 'B'))
答案 1 :(得分:1)
使用dbms_xmlgen.getxmltype
和XMLTABLE
:
SELECT *
FROM XMLTABLE('/ROWSET/ROW/*' passing dbms_xmlgen.getxmltype('SELECT 1, 2, 3 FROM DUAL')
COLUMNS val VARCHAR(100) PATH '.');
优于枢纽的优势-无需预先指定列列表
答案 2 :(得分:0)
如果您没有Oracle 11g,那么最好的解决方案就是您提供的解决方案:
SELECT 1 FROM DUAL
UNION
SELECT 2 FROM DUAL