• ベストアンサー

Oracle9i SQLについて

Oracle9i SQLについて 環境:WinXP(SP3),Oracle9i,VB2005 受注のテーブルから未出荷で品番毎に一番早い納期の 受注数を取得したいのですが上手くいきません ご教授願います。 SQL出力結果イメージ 品番  納期   受注数 A 2010/06/01 6 B 2010/05/26 10 C 2010/05/24 1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

これでいかがでしょうか? SELECT A.品番ID, A.納期, A.受注数 FROM テーブル A WHERE (A.品番ID, A.納期) IN (SELECT B.品番ID, Min(B.納期) FROM テーブル B WHERE B.状態K = "未出荷" GROUP BY B.品番ID)

fumofumof
質問者

お礼

ありがとうございます。 目的の結果が得られました。

その他の回答 (2)

回答No.2

抽出元のテーブルの構造がわからないと回答するのは難しいです。

fumofumof
質問者

補足

すみません。 受注製番  NO  品番K    品番ID    納期      受注数    状態K 1000       0    1        A    2010/05/24     1       未出荷 1001       0     1        A    2010/05/25    10      未出荷 1002       0    1       A    2010/05/26     15      未出荷 1003        0    1         B   2010/05/24      25    未出荷 1004        0     1         C   2010/05/26      100    未出荷 となっており主キーは受注製番とNOです 品番Kは生産管理システム内での在庫を管理するための区分 ですので今回は関係ありません

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

「未出荷」の条件が分からないのですが、仮に 納期>本日とすると、以下のようになるでしょう。 SELECT B.* FROM (SELECT 品番,MIN(納期) 最早 FROM テーブル WHERE 納期>SYSDATE GROUP BY 品番) A INNER JOIN テーブル B ON A.品番=B.品番 AND A.最早=B.納期

fumofumof
質問者

お礼

ありがとうございます。 INNER JOIN で実現できるのですね。

関連するQ&A