基于ID和组后减去值

时间:2015-03-06 15:41:52

标签: sql oracle group-by subtraction

我正在使用Oracle。

有一张桌子:

Year   Type   Value
2011   1       500
2011   2       550
2011   3       600
...
...
2012   1       600
2012   2       750
2012   3       930

我需要从年份中减去不同类型的所有值。 操作将是:

2011年 - > 1-2-3(500-550-600)

2012年 - > 1-2-3(600-750-930)

对......

结果应为:

Year   Value
2011   -650  
2012   -1080 
...    ...  

我只是无法让这个查询工作..

2 个答案:

答案 0 :(得分:5)

使用条件聚合:

select sum(case when type = 1 then value else - value end) as value
from table t
group by year;

答案 1 :(得分:0)

你的意思是GROUP BY,CASE决定签名+代表类型1, - 代表其他人:

select "year", 
       SUM(case when type = 1 then value else -value end)
from yourtable
group by "year"