サブクエリでの抽出について
●趣旨
下記のテーブルを参照しデータを抽出したいのですが、うまくいきません。
前回の質問に近い内容ですが是非アドバイスをお願いします。
【在庫ファイル】
品番 メーカー
0001 A
0001 B
【棚卸ファイル】
棚卸日 品番 メーカー
2005/10/10 0001 A
2006/10/10 0001 B
【商品情報M】
品番 メーカー 適用日 原価
0001 A 2004/01/01 500
0001 A 2005/01/01 1000
0001 A 2006/01/01 2000
0001 C 2005/01/01 5000
☆画面でメーカー指定:A~B
【求める結果】
品番 メーカー 原価
0001 A 1000(棚卸ファイル.棚卸日以前のデータ内でMAX(適用日)の原価)
0001 B 0(←商品情報に存在しない場合は0にする)
SELECT
在庫ファイル.品番,
在庫ファイル.メーカー,
NVL(商品情報.原価,0)
FROM
商品情報M,
在庫ファイル,
棚卸ファイル,
(
SELECT
品名情報M.品番,
品名情報M.メーカー,
MAX(品名情報M.適用日) MAX日付
FROM
商品情報M,
在庫ファイル,
棚卸ファイル
WHERE
在庫ファイル.メーカー = 商品情報M.メーカー AND
在庫.品番 = 商品情報M.品番 AND
棚卸ファイル.棚卸日 >= 商品情報M.適用日
)SUB_Q
WHERE
SUB_Q.MAX日付(+) = 商品情報M.適用日 AND
在庫ファイル.メーカー = SUB_Q.メーカー(+) AND
在庫ファイル.品番 = SUB_Q.品番(+)
●やりたいこと
・在庫ファイル・棚卸ファイルを主テーブルとして、対象の品番・メーカーを抽出し、
その品番・メーカーの原価を結果として返したいです。
・原価は棚卸日以前のMAX(適用日)のものを取得したいです。
●現状
上記のようなSQLを作成したのですが、結果は
主テーブルに存在しないメーカーCの原価を取得してしまい、
原価だけが異なる複数レコードが取得されてしまいます。