2016-12-07 49 views
0

我立足我的問題在本教程中(甲骨文樞SQL)財務指標:https://oracle-base.com/articles/11g/pivot-and-unpivot-operators-11gr1的Oracle SQL樞軸通過ID和日期

我有索引的價格(股市相關的),其中有一個價格爲每一個數據庫天。我需要選擇數據,以便按日期對指數價格進行分組,併爲每個指數創建一個列。

我的DB是這樣的:

enter image description here

我需要這樣的:

enter image description here

我曾嘗試以下

SELECT * 
FROM (SELECT name, price_date, price 
     FROM ibsecmprch) 
PIVOT (GROUP(price_date) as pricedate FOR (name) IN ('A' AS a, 'B' AS b, 'C' AS c)) 
ORDER BY name; 
+0

嘗試後會發生什麼? –

+0

00936. 00000 - 「缺失的表情」 – DavidDunham

+0

爲什麼你需要這個?唯一合理的用途是用於報告目的;爲了進一步處理,當前存儲數據的方式比樞轉版本更合適。而對於報表來說,在報表應用程序中的擺動要好得多 - 您可以更好地控制格式。這並不是說你不能在SQL中進行數據透視,而只是問爲什麼。 – mathguy

回答

3
... pivot (max(price) for name in ('SP500' as SP500, 'DOW' as DOW, 'DAX' as DAX)) 

(等)

+0

「max(price)」我得到:ORA-00904:「NAME」:無效標識符 – DavidDunham

+0

@DavidDunham - 可能是由您的ORDER BY條款引起的。你想如何命令你的輸出'BY NAME'?輸出中沒有更多的'name'。無論如何,您可能都想用'price_date'命令。當然,愚蠢的我當然是 – mathguy

+0

。是的,現在它的作品! – DavidDunham