Я использую 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 
...    ...  

Мне просто не удается заставить этот запрос работать ..

0
valter.vx 6 Мар 2015 в 18:41

2 ответа

Лучший ответ

Использовать условное агрегирование:

select sum(case when type = 1 then value else - value end) as value
from table t
group by year;
7
Gordon Linoff 6 Мар 2015 в 15:43

Вы имеете в виду GROUP BY, CASE, чтобы выбрать знак + для типа 1, - для других:

select "year", 
       SUM(case when type = 1 then value else -value end)
from yourtable
group by "year"
0
jarlh 6 Мар 2015 в 15:45