我在Oracle PL SQL Developer中使用pivot如下:
SELECT *
FROM population
PIVOT (AVG(Total) for Data_Type IN ('Group1','Group2','Group3'))
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我不想每次添加新列或更改一个(即Group4,5,6等)时编辑,所以我尝试了一个子查询,如下所示:
SELECT *
FROM population
PIVOT (AVG(Total) for Data_Type IN (SELECT Data_Type FROM population))
Run Code Online (Sandbox Code Playgroud)
这会导致以下错误:ORA-00936:缺少表达式.
经过一些研究,似乎我可以用XML生成结果,所以我尝试了以下方法:
SELECT *
FROM population
PIVOT XML(AVG(Total) for Data_Type IN (ANY))
Run Code Online (Sandbox Code Playgroud)
这实际上生成了所需的数据,但是采用XML格式.所以我的问题是,如何在PL SQL Developer中将XML结果转换为标准表格式?或者,如果我想将生成的XML文件放入Crystal Reports之类的工具中,我需要为这些结果提供模式文件.这是否可以在SQL中轻松自动生成?