2012-01-06 199 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