sql 除法中如何防止被除数为0?(急)

SUM(ROUND(S1.SAL_AMT/S1.SAL_NOS_PRM_AMT)ADD_COUNT,SUM(ROUND(S1.SAL_PRM_AMT/S1.RECV_PR... SUM(ROUND(S1.SAL_AMT / S1.SAL_NOS_PRM_AMT ) ADD_COUNT,
SUM(ROUND(S1.SAL_PRM_AMT / S1.RECV_PRM_AMT)) ADD_SALE_COUNT
如果要用CASE语句判断的话,该如何进行?这两个都需要判断

下面是我自己写的,可是这样排列查询会报错,麻烦帮帮我啦
CASE WHEN S1.SAL_NOS_PRM_AMT = 0 THEN 1
ELSE S1.SAL_NOS_PRM_AMT
END SAL_NOS_PRM_AMT,

CASE WHEN S1.RECV_PRM_AMT = 0 THEN
ELSE S1.RECV_PRM_AMT
END RECV_PRM_AMT,

SUM(ROUND(S1.SAL_AMT / S1.SAL_NOS_PRM_AMT ) ADD_COUNT,
SUM(ROUND(S1.SAL_PRM_AMT / S1.RECV_PRM_AMT)) ADD_SALE_COUNT
展开
 我来答
loveyurui
推荐于2017-11-24 · TA获得超过6557个赞
知道大有可为答主
回答量:2892
采纳率:33%
帮助的人:1003万
展开全部
我一般在项目中都是用case when 方式,不仅仅判断被除数,还需要判断除数;
这样写可能会好点:
SUM(ROUND(case when S1.SAL_NOS_PRM_AMT<=0 then S1.SAL_AMT
when S1.SAL_AMT<=0 then 0
else S1.SAL_AMT / S1.SAL_NOS_PRM_AMT
end)
) ADD_COUNT,
z_blue_b
2011-06-09 · TA获得超过199个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:298万
展开全部
用decode函数。
如:decode(S1.SAL_NOS_PRM_AMT,0,1,S1.SAL_NOS_PRM_AMT)
decode(S1.RECV_PRM_AMT,0,1,S1.RECV_PRM_AMT)
追问
这里面的参数怎么一样的啊?不应该是下面这样的么?
decode(S1.SAL_AMT,0,1,S1.SAL_NOS_PRM_AMT)
decode(S1.SAL_PRM_AMT,0,1,S1.RECV_PRM_AMT)
追答
decode(S1.SAL_NOS_PRM_AMT,0,1,S1.SAL_NOS_PRM_AMT)
的意思是:
如果S1.SAL_NOS_PRM_AMT=0 那么结果为1
否则结果为S1.SAL_NOS_PRM_AMT
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式