SQL DB2 null计算导致问题

时间:2011-04-13 21:46:29

标签: sql null db2 coalesce isnull

我有以下SQL:

Select dmvndn "Vendor Number", IFNULL(sum(dmsls) / sum(dmprc), 0) "Calculation"
From MyFile
Group By dmvndn

然而,当我运行它时,我仍然在我的“计算”字段中获得空记录。

我也尝试过COALESCE函数,返回相同的结果。我得到一些记录为0,有些记录是空白的(或者为空)。

这两个字段都是P类型,我被告知它是打包数字。

任何想法或建议?

修改1 似乎问题不在于这些字段中的任何一个是NULL,而是一个或两个字段都是0.当我除以零时,我得到空/空结果。

2 个答案:

答案 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非常有意义。