查询报错:遇到以零作除数错误。

ysycysyc 2018-02-24 09:02:10
各位大虾,帮看下是哪有错误
SELECT y.a,y.b,y.c,y.d,y.e,y.f FROM TMY y join TMZ z on

(

( cast(z.a/y.b as numeric(18,4)) + cast(z.a/y.c as numeric(18,4)) ) /
( cast(z.e/y.a as numeric(18,4)) + cast(z.e/y.b as numeric(18,4)) )
+
( cast(z.c/y.b as numeric(18,4)) + cast(z.c/y.f as numeric(18,4)) ) /
( cast(z.d/y.e as numeric(18,4)) + cast(z.d/y.f as numeric(18,4)) )

)

/

(
(cast(z.c/y.d as numeric(18,4)) + cast(z.c/y.e as numeric(18,4)) ) /
(cast(z.f/y.e as numeric(18,4)) + cast(z.f/y.f as numeric(18,4)) )
)

=0.1234

这里面没有可能是等于0的,但报错提示:遇到以零作除数错误。
...全文
1225 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysycysyc 2018-03-02
  • 打赏
  • 举报
回复
感谢各位大虾,但是我还是没整出来,又想了一个办法,可以让多个分子相加,现在好象可以解决了,谢谢大虾们热心指点。
qq_39412731 2018-02-26
  • 打赏
  • 举报
回复
把除数转化为decimal
xiaoxiangqing 2018-02-26
  • 打赏
  • 举报
回复
在where里要加上过滤除0的条件
二月十六 2018-02-26
  • 打赏
  • 举报
回复
引用 6 楼 ysycysyc 的回复:
是不是只要c<d即整数部分为0,cast(Z.c/y.d as numeric(18,4))就返回0
是这样,把c变成小数即可
SELECT cast(10.00/100 as numeric(18,4))
这样就可以
卖水果的net 2018-02-25
  • 打赏
  • 举报
回复
不会的,他提示有零出错误,那肯定是有。 from 后,是两个表还是视图?
MirrorLsc 2018-02-25
  • 打赏
  • 举报
回复
单个排查吧。。否则很难debug
cattpon 2018-02-25
  • 打赏
  • 举报
回复
逐个累除。。。
OwenZeng_DBA 2018-02-25
  • 打赏
  • 举报
回复
这个跟你表中的数据有关。还是逐步排查吧。1。是把条件一个一个的去掉,缩小范围。2.把on后面的条件的内容select出来看看都是些什么内容
吉普赛的歌 2018-02-25
  • 打赏
  • 举报
回复
引用 7 楼 ysycysyc 的回复:
怎样才能让上面的查询结果返回的值不是0,比如z.c=10 ,y.d=30,使z.c/y.d 返回的值是0.3333而不是0
(z.c*1.0)/y.d
ysycysyc 2018-02-25
  • 打赏
  • 举报
回复
怎样才能让上面的查询结果返回的值不是0,比如z.c=10 ,y.d=30,使z.c/y.d 返回的值是0.3333而不是0
ysycysyc 2018-02-25
  • 打赏
  • 举报
回复
是不是只要c<d即整数部分为0,cast(Z.c/y.d as numeric(18,4))就返回0
ysycysyc 2018-02-25
  • 打赏
  • 举报
回复
我试了一下 SELECT Z.c,y.d FROM TMY y join TMZ z on cast(Z.c/y.d as numeric(18,4))=0 结果是: c=10--TMZ只有一条记录 而d有很多值,但都不是0,这是怎么回事
吉普赛的歌 2018-02-25
  • 打赏
  • 举报
回复
只能按楼上几位的来。 查到有0的, 用 case when 来处理为0的情况, 比如用 0.001 代替 0
二月十六 2018-02-24
  • 打赏
  • 举报
回复
一个一个的排查,把条件去掉几个,然后一个一个的往上加

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧