我有以下SQL:
Select dmvndn "Vendor Number", IFNULL(sum(dmsls) / sum(dmprc), 0) "Calculation"
From MyFile
Group By dmvndn
然而,当我运行它时,我仍然在我的“计算”字段中获得空记录。
我也尝试过COALESCE函数,返回相同的结果。我得到一些记录为0,有些记录是空白的(或者为空)。
这两个字段都是P类型,我被告知它是打包数字。
任何想法或建议?
修改1 似乎问题不在于这些字段中的任何一个是NULL,而是一个或两个字段都是0.当我除以零时,我得到空/空结果。
答案 0 :(得分:1)
尝试
Sum(IFNULL(dmsls,0)) / Sum(IFNULL(dmprc,0))
答案 1 :(得分:0)
这种技巧在MS SQL Server中帮助我:
Select
dmvndn "Vendor Number",
IFNULL(sum(dmsls) / NULLIF(sum(dmprc), 0), 0) "Calculation"
From MyFile
Group By dmvndn
我想知道它是否对DB2无法帮助你。
更新:解释。
基本上,如果它是0,它用NULL替换除数。你可能知道当至少有一个操作数为NULL时,操作的结果也变为NULL。
为了将结果视为NULL,您已经在结果上使用了IFNULL。它没有太大的区别然后,因为没有一个操作数可能是NULL。但是,现在使用IFNULL非常有意义。