我使用nullif并得到sql除零错误

时间:2018-05-08 13:56:00

标签: sql-server divide-by-zero

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 :(得分:1)

您的问题是当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
相关问题