2015-09-17 4 views
-1
select sum(amount), Type, ProductName, ProductCategory 
from ProductAmount 
Group by Type, ProductName, ProductCategory 

Выполнение этого запроса дает только положительное количество, а также заменяет отрицательную сумму на 0. Есть ли способ обойти это?Группа по возврату 0 вместо отрицательной суммы

+1

Довольно редкий по подробностям здесь. Мне нравятся догадки, которые ответил lad2025. Другим вариантом может быть просто добавить предложение where. «ГДЕ Сумма> 0» –

+0

Я понял свою проблему. Были некоторые продукты, которые были возвращены, поэтому количество показало (например) -1200, а также было другое количество, когда продукт был куплен до его возврата. Поэтому, когда я использовал функцию SUM, она избавилась от отрицательной суммы и вместо этого заменила ее на 0. – NonProgrammer

ответ

0
select sum(CASE WHEN amount < 0 THEN 0 ELSE amount END), Type, ProductName, ProductCategory 
from ProductAmount 
Group by Type, ProductName, ProductCategory 

или с помощью SQL Server 2012+:

select sum(IIF(amount < 0, 0, amount)), Type, ProductName, ProductCategory 
from ProductAmount 
Group by Type, ProductName, ProductCategory 
0

Я понял мою проблему. Были некоторые продукты, которые были возвращены после их покупки. Я не понял, что таблица фиксирует отрицательную сумму при возврате и положительную сумму при покупке. Для моего случая, когда я использовал функцию SUM, она добавила сумму для определенного продукта, и итог составил 0.

Смежные вопросы