Oracle: 转置表

5

我有以下查询

SELECT 1, 2 FROM DUAL

AND I'd like something like

SELECT TRANSPOSE(SELECT 1, 2 FROM DUAL)

这将输出与以下内容相同

SELECT 1 FROM DUAL
UNION
SELECT 2 FROM DUAL

我希望它可以将行和列交换。


4
这是哪个版本的Oracle? - user359040
3个回答

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
使用 dbms_xmlgen.getxmltypeXMLTABLE
SELECT *
FROM XMLTABLE('/ROWSET/ROW/*' passing  dbms_xmlgen.getxmltype('SELECT 1, 2, 3 FROM DUAL') 
              COLUMNS val VARCHAR(100) PATH '.');

db<>fiddle演示

与 unpivot 相比的优势 - 无需提前指定列列表


0
如果你没有Oracle 11g,最好的解决方案就是你提供的那个:
SELECT 1 FROM DUAL
UNION
SELECT 2 FROM DUAL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接