1

我有四个字段——itemnum、storeloc、binnum 和数量。

我正在尝试选择前三个字段匹配的数据,但 binnum 有时为空。当我对数量进行求和时,由于 NULL binnum,计算不正确。数据库有一个索引,其中只能有一个 itemnum、storeloc 和 binnum 组合,其中 binnum 可以为 NULL。我意识到允许密钥具有 NULL 数据是不好的做法,但我无法控制数据的结构。

我尝试了以下 where 子句:

where nvl(b.binnum,0) = nvl(mu.binnum,0)

where b.binnum is null and mu.binnum is null

两者都不起作用。有什么建议么?

4

1 回答 1

4

NVL用于连接可能具有NULL值的字段是执行此操作的典型方法。使用这种查询:

WHERE b.itemnum = mu.itemnum
  AND b.storeloc = mu.storeloc
  AND NVL(b.binnum, 0) = NVL(mu.binnum, 0)

假设在任一表中实际上都没有binnum值为 的行0。如果不是这种情况,总和将被取消。您将加入binnum具有0价值和binnum具有NULL价值的人。需要根据您的域定义选择一个您知道永远不会存在的默认值进行比较。即如果binnumNULL或大于0

WHERE b.itemnum = mu.itemnum
  AND b.storeloc = mu.storeloc
  AND NVL(b.binnum, -1) = NVL(mu.binnum, -1)
于 2013-02-12T01:51:06.120 回答