遇到被零除错误,怎么办?各位大哥请指点?

daqi2010 2009-10-31 04:29:22
select A.pro_id,sum(B.pro_amount * B.pro_price)/isnull(sum(B.pro_amount+d.pro_stoamount),1) ....
提示

遇到被零除错误
应该如何写
...全文
353 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQL77 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 daqi2010 的回复:]
引用 2 楼 luoyoumou 的回复:
引用楼主 daqi2010 的回复:
select A.pro_id,sum(B.pro_amount * B.pro_price)/isnull(sum(B.pro_amount+d.pro_stoamount),1) ....
提示

遇到被零除错误
应该如何写


SQL codeselect A.pro_id,sum(B.pro_amount* B.pro_price)/(casewhensum(B.pro_amount+d.pro_stoamount)=0then0.0000001elsesum(B.pro_amount+d.pro_stoamount)end)as sumsfrom ......


-------------------
谢谢
luoyoumou
为零或为空时,都能被除应该如何写

[/Quote]
CASE WHEN A IS NULL OR A=0 THEN 0 ELSE A END
luoyoumou 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 linste 的回复:]
我一般是这么处理的

(case isnull(a,0) when 0 then 0 esle b/a end )
[/Quote]

----嗯:这样当然可以,主要看你的业务规则了!
linste 2009-10-31
  • 打赏
  • 举报
回复
我一般是这么处理的

(case isnull(a,0) when 0 then 0 esle b/a end )
luoyoumou 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 luoyoumou 的回复:]
SQL codeselect A.pro_id,sum(B.pro_amount* B.pro_price)/(casewhenisnull(sum(B.pro_amount+d.pro_stoamount),0)=0then0.0000001elsesum(B.pro_amount+d.pro_stoamount)end)as sumsfrom ......
[/Quote]

----加个isnull函数,或者将=0改成:in (0,null)
luoyoumou 2009-10-31
  • 打赏
  • 举报
回复
select A.pro_id,
sum(B.pro_amount * B.pro_price)/(case when isnull(sum(B.pro_amount+d.pro_stoamount),0)=0 then 0.0000001 else sum(B.pro_amount+d.pro_stoamount) end) as sums
from ......
feixianxxx 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 daqi2010 的回复:]
sum(B.pro_amount+d.pro_stoamount)为零或为空时,都能被除
[/Quote]
...还是没说清楚...
为NULL 你要怎么处理 转化为多少》。。。还有被除数为0本来就可以除。。
那除数这种情况怎么处理呢?
。。。都没说清楚
daqi2010 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luoyoumou 的回复:]
引用楼主 daqi2010 的回复:
select A.pro_id,sum(B.pro_amount * B.pro_price)/isnull(sum(B.pro_amount+d.pro_stoamount),1) ....
提示

遇到被零除错误
应该如何写



SQL codeselect A.pro_id,sum(B.pro_amount* B.pro_price)/(casewhensum(B.pro_amount+d.pro_stoamount)=0then0.0000001elsesum(B.pro_amount+d.pro_stoamount)end)as sumsfrom ......
[/Quote]

-------------------
谢谢
luoyoumou
为零或为空时,都能被除应该如何写
guguda2008 2009-10-31
  • 打赏
  • 举报
回复
除0你想得到什么结果?
DECLARE @I INT
SELECT @I=0
SELECT CASE WHEN @I=0 THEN 你要的结果 ELSE 2/@I END
daqi2010 2009-10-31
  • 打赏
  • 举报
回复
sum(B.pro_amount+d.pro_stoamount)为零或为空时,都能被除
luoyoumou 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 daqi2010 的回复:]
select A.pro_id,sum(B.pro_amount * B.pro_price)/isnull(sum(B.pro_amount+d.pro_stoamount),1) ....
提示

遇到被零除错误
应该如何写
[/Quote]


select A.pro_id,
sum(B.pro_amount * B.pro_price)/(case when sum(B.pro_amount+d.pro_stoamount)=0 then 0.0000001 else sum(B.pro_amount+d.pro_stoamount) end) as sums
from ......
feixianxxx 2009-10-31
  • 打赏
  • 举报
回复
..是你想怎么处理

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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