我有四个字段 - itemnum,storeloc,binnum和quantity。
我正在尝试选择前三个字段匹配的数据,但binnum有时为null。当我对数量执行求和时,由于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
两者都不起作用。有什么建议吗?
答案 0 :(得分:3)
使用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
值binnum
。需要选择一个默认值进行比较,根据您的域定义,您知道该默认值永远不会存在。即如果NULL
为0
或大于WHERE b.itemnum = mu.itemnum
AND b.storeloc = mu.storeloc
AND NVL(b.binnum, -1) = NVL(mu.binnum, -1)
:
{{1}}