Условные столбцы суммирования - PullRequest
1 голос
/ 07 февраля 2012

У меня следующая ситуация

ID   Value
1    50
1    60
2    70
2    80
1    0
2    50

Мне нужно выполнить запрос, который бы возвращал суммированное значение, сгруппированное по ID.Уловка в том случае, если значение равно 0, тогда вся сумма должна быть 0.

Результаты запроса будут

ID   Value
1    0
2    200

Я пытался

select ID, case 
when Value> 0 then sum(Value) * 1
when Value= 0 then sum(value) * 0
end
from table

, но это сделалне работает.

1 Ответ

4 голосов
/ 07 февраля 2012
select ID,
       sum(value)*sign(min(abs(value))) as [sum(value)]
from YourTable
group by ID

В случае, если вам нравится:

select ID,
       case sign(min(abs(value)))
         when 0 then 0 
         else sum(value)
       end  as [sum(value)]
from YourTable
group by ID
...