除以零错误使用多个SUM时遇到

时间:2014-11-11 16:09:15

标签: mysql sql isnull

我创建了以下查询

SELECT LPORGNAME
,SUM(TOTALNoOFTRANSFERS) as TOTAL
,SUM(TReads) AS TReads
,ISNULL(ROUND(ISNULL(SUM(TReads),0)/CAST(SUM(TOTALNoOFTRANSFERS)AS FLOAT)*100,2),0)
FROM T_SPID_TRANSFER_IVSO
WHERE DM_FISC_YEAR = '2014-15'
GROUP BY LPORGNAME, DM_FISC_YEAR
ORDER BY LPORGNAME, DM_FISC_YEAR

但是我遇到了零错误的分歧,因为你可以看到我试图尝试ISNULL方式,但这不起作用。我该如何解决这个问题?

编辑 TOTALNoOFTRANSFERS是一个不允许NULLS的SUM列,所以它总是为0

编辑找到一种避免所有0的简单方法。添加WHERE TOTALNoOFTRANSFERS> 0,全部避免所有0

1 个答案:

答案 0 :(得分:1)

基本上你做

SUM(TReads) / SUM(TOTALNoOFTRANSFERS)*100

可以是例如

3 / 0

无法计算除以零。想想应该显示什么然后做一个例外。喜欢这个

case when SUM(TOTALNoOFTRANSFERS) = 0
     then 0
     else SUM(TReads) / SUM(TOTALNoOFTRANSFERS)*100
end
相关问题