1

我有以下 SQL:

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

但是,当我运行它时,我的“计算”字段中仍然出现空记录。

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

这两个字段都是 P 类型,我被告知是压缩数字。

有什么想法或建议吗?

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

4

2 回答 2

1

尝试

Sum(IFNULL(dmsls,0)) / Sum(IFNULL(dmprc,0))
于 2011-04-13T21:53:31.143 回答
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 非常有意义。

于 2011-04-14T15:01:40.447 回答