17,134
社区成员
发帖
与我相关
我的任务
分享比如这种问题怎么处理(a/(b/c))其中B和C都有可能为0
实际问题是这跟1/(round((sum(g.goodsqty*h.unitprice))/(e.dtlgoodsqty*f.unitprice),2))
其中e.dtlgoodsqty*f.unitprice可能为0
g.goodsqty*h.unitprice也可能为0
最开始我是这样写的 但是没用decode((e.dtlgoodsqty*f.unitprice),0,0,(round(1/(round((sum(g.goodsqty*h.unitprice))/(e.dtlgoodsqty*f.unitprice),2)),2)*100))
还有,发问题干嘛不走问答板块,现在社区帖子看的人太少了
方法一
case when e.dtlgoodsqty*f.unitprice=0 or sum(g.goodsqty*h.unitprice) =0 then null
else
1/(sum(g.goodsqty*h.unitprice))/(e.dtlgoodsqty*f.unitprice))
end
方法二
1/(decode(sum(g.goodsqty*h.unitprice),0,null))/decode((e.dtlgoodsqty*f.unitprice),0,null)
除了判断你这两个乘积可能除数为0的情况,还要注意一下,可能会出现round前不为0,但round后为0的情况,如果非得在分母里round,那还是在case when 里再加个条件吧,太长了
a/(b/c) = ac/b = ac/nullif(b,0)
试试nullif函数
求解啊!!!!