我是SQL的新手,我想知道处理零除的最佳方法。我知道NULLIF函数,但是在实现它时遇到了一些麻烦。
在此示例中,每个字段都可以为零。解决此问题的最佳方法是什么?我们应该检查整个表达式是否等于零,还是对mu表达式中的每个字段进行某种检查?
SELECT
round(Sum((SOI.CurItemValue + SOI.CurTaxValue) / NULLIF(SOI.Quantity,0) * NULLIF(SOI.QuantityOutstanding,0)),2)
FROM SalesOrderItems SOI
使用当前代码,我得到Null value is eliminated by an aggregate or other SET operation.
答案 0 :(得分:1)
仅当“数量”大于0时,才可以使用CASE进行计算。检查此查询:
SELECT
CASE WHEN SOI.Quantity=0 THEN 0
ELSE ROUND( Sum( (SOI.CurItemValue + SOI.CurTaxValue) / SOI.Quantity * SOI.QuantityOutstanding ),2) END OutstandingValue
FROM SalesOrderItems SOI