我有一个 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。
我该怎么做?
最佳答案
您可以使用CASE
语句
SUM(CASE WHEN i.Quantity < 0 THEN 0 ELSE i.Quantity END)
或者专有的IIF
版本
IIF(i.Quantity < 0, 0, i.Quantity)
或者更晦涩的版本
SUM(NULLIF(i.Quantity, -ABS(i.Quantity)))
或者如果不需要用于任何其他目的,则将这些行完全排除在 WHERE
子句中。
在 Azure SQL 数据库中,您现在还可以使用 GREATEST
函数用于此
GREATEST(i.Quantity,0)
关于sql - 如何将 group-by T-SQL 语句中的所有负数清零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7320155/