【问题标题】:i used nullif and got sql divide by zero error我使用 nullif 并得到 sql 除以零错误
【发布时间】:2018-05-08 13:56:00
【问题描述】:
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 函数?

提前致谢。

【问题讨论】:

  • 因为你还在除以零

标签: sql-server divide-by-zero


【解决方案1】:

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

【讨论】:

  • Tim,我试过你上面分享的查询,现在可以了,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多