Как бороться с делением на ноль ошибок в SQL - PullRequest
0 голосов
/ 22 ноября 2018

Я новичок в 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 голосов
/ 22 ноября 2018

вы можете использовать CASE для расчета только если количество больше 0. Проверьте этот запрос:

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