я использовал nullif и получил sql делить на ноль ошибок - PullRequest
0 голосов
/ 08 мая 2018
select STORECODE,
   ItemCode,
   ColorCode,
   ToplamStok,
   ToplamSatis,
   (CASE WHEN ToplamSatis = 0
     THEN ISNULL(ToplamStok/NULLIF(ToplamSatis,0.1)*7,0)
        ELSE (ToplamStok/ToplamSatis)*7
        end) as SDH
   into #SatisStokSDH
   from #SatisStok

для этого запроса я получаю эту ошибку: ошибка деления на ноль. почему я получаю это, я уже использовал функцию isnull?

Заранее спасибо.

1 Ответ

0 голосов
/ 08 мая 2018

Ваша проблема в том, что когда ToplamSatis оказывается равным нулю, вы все равно делитесь на ноль:

NULLIF(ToplamSatis, 0.1)

Вышеуказанное заменит ToplamSatis на 0.1, но только если первое будет NULL, , а не , если оно будет равно нулю. Попробуйте следующую CASE логику:

CASE WHEN ToplamSatis = 0
     THEN ISNULL((ToplamStok / 0.1)*7, 0)   -- not sure if need to wrap with ISNULL
     ELSE (ToplamStok / ToplamSatis)*7
END
...