Как обнулить все отрицательные числа в инструкции group-by T-SQL

У меня есть запрос T-SQL, где я хочу, чтобы все отрицательные величины были обнулены.

SELECT 
p.productnumber, 
v.[Description],
SUM(i.Quantity) as quantity
FROM ...
LEFT JOIN ...
LEFT JOIN ...
LEFT JOIN ...
GROUP BY productnumber, [Description]

в основном если сумма состоит из 5, 5, -1, результат должен быть 5+5+0=10, а не (5+5+(-1)=9.

Как бы я это сделал?

3 ответов


вы могли бы использовать CASE сообщении

SUM(CASE WHEN i.Quantity < 0 THEN 0 ELSE i.Quantity END)

или более неясная версия

SUM(NULLIF(i.Quantity, -ABS(i.Quantity)))

или просто исключить эти строки WHERE пункт, если они не нужны для других целей.


просто отфильтруйте те, которые вам не нужны...

WHERE quantity > 0

SUM(CASE WHEN i.Quantity < 0 THEN 0 ELSE i.Quantity END) as quantity