我使用 nullif 并得到 sql 除以零错误
i used nullif and got sql divide by zero error
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 函数?
提前致谢。
你的问题是当ToplamSatis
恰好为零时,你仍然除以零:
NULLIF(ToplamSatis, 0.1)
以上将用0.1
替换ToplamSatis
,但前提是前者是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
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 函数?
提前致谢。
你的问题是当ToplamSatis
恰好为零时,你仍然除以零:
NULLIF(ToplamSatis, 0.1)
以上将用0.1
替换ToplamSatis
,但前提是前者是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