从哪里选择

问题描述:

使用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 

,我只是每标识符获得一个行是很重要的。

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