2014-10-03 158 views
0

使用oracle,如何使用單個查詢來執行此操作?從哪裏選擇

VALUE  TYPE  IDentifier  
12   aa   123 
123   bb   123 
323   aa   1234 
1212   cc   123 
2   aa   12345 
123   dd   123 

SELECT IDentifier , SUM(VALUE) AS typeAASum WHERE TYPE = 'aa' 
SELECT IDentifier , SUM(VALUE) AS typeBBSum WHERE TYPE = 'bb' 
SELECT IDentifier , SUM(VALUE) AS typeCCSum WHERE TYPE = 'cc' 

所以我的結果將是,再次在一個查詢中,

IDentifier  TypeAASum TypeBBSum  TypeCCSum 

,我只是每標識符獲得一個行是很重要的。

回答

2
SELECT Identifier, 
     SUM(CASE WHEN TYPE = 'aa' THEN VALUE ELSE 0 END) AS typeAASum, 
     SUM(CASE WHEN TYPE = 'bb' THEN VALUE ELSE 0 END) AS typeBBSum, 
     SUM(CASE WHEN TYPE = 'cc' THEN VALUE ELSE 0 END) AS typeCCSum 
FROM YourTable 
GROUP BY Identifier 
+0

真的那麼簡單嗎? – 2014-10-03 20:03:04

+3

@PatrickSchomburg是的,這就是爲什麼他用它作爲答案 – 2014-10-03 20:20:58

+0

工作完美。價值是一個計算的領域,仍然表現非常好。 – 2014-10-03 20:50:54