1

itemnum、storeloc、binnum、quantityの4つのフィールドがあります。

最初の3つのフィールドが一致するデータを選択しようとしていますが、binnumがnullになることがあります。数量の合計を実行すると、ビナムがNULLであるため、計算が正しくありません。データベースには、binnumがNULLになる可能性があるitemnum、storeloc、およびbinnumの組み合わせが1つだけ存在できるインデックスがあります。キーに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ます。ドメイン定義によっては存在しないことがわかっている比較用のデフォルト値を選択する必要があります。つまり、以上の場合:0binnumNULLbinnumNULL0

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 に答える