小编Dan*_*Dan的帖子

带有子查询的Oracle数据透视

我在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中轻松自动生成?

xml oracle plsql pivot oracle11g

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

oracle ×1

oracle11g ×1

pivot ×1

plsql ×1

xml ×1