プロが教える店舗&オフィスのセキュリティ対策術

初めて投稿いたします。
失礼等ございましたら、お伝え下さい。
過去の質問も検索したのですが、それらしいものが見つけられませんでしたので、新たに質問させていただこうと思いました。
もし、過去に同様の内容がございましたら、教えていただければ幸いです。

さて、質問内容ですが、
当方SQLについて少しかじった事がある程度の初心者です。
先日、上司にEXCELで「注文書の台帳から条件を指定し抽出できるツール」
の作成を頼まれました。
台帳はSQL-Serverで、
ツールはExcelのVBAで作成しています。
そこで質問なのですが、
台帳には注文Noと注文No枝番というフィールドがあります。
注文書は新規で注文書に起票した際に振られる番号で、
注文書が変更される度に、枝番が1、2・・・と1つづつシーケンスで
増えていきます。

現在、単純に条件を入力して、台帳の全項目の情報を出力するところまでは作成できたのですが、注文書Noが同一で枝番が複数ある場合、最も枝番が大きいレコードを抽出するというSQL文を記述したいのですが、
どのような命令文を使えばいいのか分かりません。

例)
No 注文書No 注文書No枝番 契約者名   住所
1 1001 1      ○○商社   東京都・・・
2 1002 1      ○○会社   千葉県・・・
3 1002 2      ○○会社   千葉県・・・
4 1003 1      株式会社○○

この場合、No1、3、4の全項目を抽出したいのです。
方法は複数あるのかとは思いますが、いくつか教えていただければ幸いです。
よろしくお願い致します。

A 回答 (1件)

私なら



SELECT
 台帳.*
FROM
 台帳,
 (SELECT
   注文書No,
   MAX(注文書No枝番) AS 注文書No枝番
  FROM
   台帳
  GROUP BY 注文書No) 台帳2
WHERE
 台帳.注文書No = 台帳2.注文書No
 AND 台帳.注文書No枝番 = 台帳2.注文書No枝番

です。
    • good
    • 0
この回答へのお礼

mjsamiasanさん
迅速な回答ありがとうございました。
mjsamiasanさんのおっしゃる通りにやってみたら、見事できました!!
イマイチ副問合せがわかっていなかったので、
このやり方が思いつきませんでした。
助かりました。ありがとうございます。
また、つたない内容の質問を理解していただき、
重ねてお礼申し上げます。

お礼日時:2007/02/06 16:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!