2012-01-06 105 views
20

Oracle的definition of the PIVOT clause指定可以在IN子句中定义子查询。什么,我会想象这是一个虚构的例子是这样的带有子查询的Oracle PIVOT子句的示例

... PIVOT (AVG(salary) FOR (company) IN (SELECT DISTINCT company FROM companies)) 

就这样,不过,我得到一个ORA-00936: Missing expression错误。不幸的是,这个新的PIVOT条款的错误通常很隐晦。任何人都可以给我一个很好的例子,说明如何在PIVOT子句的IN子句中使用子查询?

+1

感谢您的发现。我甚至在阅读该文件的一半之前放弃了。 – tumchaaditya 2014-01-02 22:47:30

回答

20

显然,我才懒得读取到文档末尾......再往下,文档指出:

子查询的子查询只用于与XML关键字一起。当您指定子查询时,子查询找到的所有值都将用于旋转。 [...]

这将工作

PIVOT XML (AVG(salary) FOR (company) IN (SELECT DISTINCT company FROM companies)) 

查看完整的文档

http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#CHDFAFIE

+3

所以我看到它以XML格式返回输出。任何想法如何获得普通输出(表格)如普通PIVOT会给? – tumchaaditya 2014-01-02 23:07:32

+0

@tumchaaditya:我不确定这是否可能。但可以肯定的是,请随时提出一个新的Stack Overflow问题。并从这里链接到它,我很好奇,我自己... – 2014-01-03 07:32:09

+1

我最终构造了SQL以外的子查询dynamicaly的结果与枢轴。我的意思是我分别运行子查询并将输出传递给主查询 – tumchaaditya 2014-01-03 17:05:40