2016-08-12 4 views
0

Итак, у меня есть этот запрос, состоящий из 3 столбцов. Первое:SQL - сумма функций с различным условием

Select c1, sum(c2), sum(c3) 
from t 
where c4 not in ('xxx') 
Group by c1 

Тогда я получаю как сумма (c2) и сумма (с3) на основе состояния.

Я только хочу применить условие на сумму (c3). Как это сделать?

Я попытался ниже, и это не сработало:

Select c1, sum(c2), (select sum(c3) from t where c4 not in ('xxx')) as c3 
from t 
group by c1 

Есть предложения? Спасибо!

ответ

2

Вы можете использовать выражение CASE с условной агрегирования вычислить c3 сумму:

SELECT c1, 
     SUM(c2), 
     SUM(CASE WHEN c4 NOT IN ('xxx') THEN c3 ELSE 0 END) 
FROM t 
GROUP BY c1 
0

Попробуйте использовать

Select c1, sum(c2), sum(case c4 when 'xxx' then 0 else c3 end) as c3 
from t 
group by c1