行至

2010-11-03 51 views
2

列我有一個像行至

cases open/close count 
----------------------------- 
A  open   10  
A  close   15 
B  open   6 
B  close   4 

我需要得到一個結果表就是喜歡

cases total  open  close 
--------------------------------- 
A  25  10  15 
B  10  6  4 

這個任何想法的表?

+0

忘了提及......源表中有其他列必須傳輸到決賽桌,因爲它是...所以...我不認爲樞軸會工作...您的建議非常感謝 – mahen 2010-11-03 18:28:21

+0

我會更詳細地描述這一點,因爲聚合/分組不是真正列到列。您可能可以使用選擇到查詢來執行此操作 – Roadie57 2010-11-03 18:33:58

回答

0

您可以使用透視列情況下的數據透視和聚合總數。

+0

PIVOT在11g中被引入,OP在標籤中指定10g – APC 2012-11-05 12:39:55

4

這通常稱爲數據透視查詢,將行轉換爲列數據。使用:

SELECT t.cases, 
     SUM(t.count) AS total, 
     SUM(CASE WHEN t.open_close = 'open' THEN t.count ELSE 0 END) AS open, 
     SUM(CASE WHEN t.open_close = 'close' THEN t.count ELSE 0 END) AS close 
    FROM YOUR_TABLE t 
GROUP BY t.cases 

Oracle在11g之前未添加ANSI PIVOT(和UNPIVOT)語法。