如何在SQL中处理零除错误

时间:2018-11-22 09:33:11

标签: sql null zero nullif

我是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.

1 个答案:

答案 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