重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

下記のテーブルから特定品番の最大値を求めたいです。


<テーブル名:TBL> レコード数 約80万件, 品番種 3,000種
品番, 更新日
------------------------
A-001, 2020/1/1
A-002, 2020/2/5
B-003, 2020/3/10
B-004, 2020/3/24
A-001, 2020/4/7
A-003, 2020/5/10
C-005, 2020/6/24
D-006, 2020/7/1



このようなテーブルから特定品番の更新日の最大値(=最終更新日)を求めたいです。

SELECT STBL_A.品番, STBL_A.更新日
FROM TBL AS STBL_A
INNER JOIN (SELECT 品番, MAX(更新日) AS MaxDate
FROM TBL
GROUP BY 品番 ) AS STBL_B
ON (STBL_A.品番 = STBL_B.品番
AND STBL_A.更新日 = STBL_B.MaxDate )


このSQL文を実行すると各品番毎の最終更新日がずらりと出力されます。
その中から特定(例えば、A-001のみ または Aで始まる品番)の最終更新日を
求めたいのです。

最後に WHEREで追加したり、下から2行目にAND文で追加したり
してみましたが、どちらも1つも表示されなくなりました。

御知恵を貸してください。よろしくお願いいたします。

質問者からの補足コメント

  • 回答ありがとうございます。
    残念ですがこれでは表示されませんでした。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/11/12 20:59
  • 回答ありがとうございます。
    書き方が悪くて申し訳ありません。

    例えば、
    ①抽出品番に'A-001' と指定したら、上から5行目の A-001, 2020/4/7 を出力
    ②抽出品番に'A-' と指定したら、
    A-002, 2020/2/5 (上から2行目)
    A-001, 2020/4/7 (上から5行目)
    A-003, 2020/5/10(上から6行目) を出力して欲しいのです。
    (品番はソートしていなくても構いません)

    これでわかりますでしょうか?

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/11/12 21:01

A 回答 (4件)

> 最後に WHEREで追加したり、下から2行目にAND文で追加したりしてみましたが、どちらも1つも表示されなくなりました。



この 条件の書き方がよくなかっただけでは?

> ②抽出品番に'A-' と指定したら、


WHERE STBL_A.品番='A-'
と指定した、ってことなら、 「A-」と等しい物は無いので、当然、1行も表示されません。


また「抽出品番に'A-001' と指定」というのが、テキストボックスに入力とかファイルから取得とかなら、
A-001 と指定しているつもりが、 A-001(改行) とか A-001(スペース) になっているとか。

半角と全角が一致していない、とか。
    • good
    • 0

いやいや。


更新日は、テーブルAとBがありますよね?
どちらの更新日が欲しいのか?
元のSQLだとBですけど、それは間違いない?そもそもテーブルAとBはなんなの?
どちらがマスタでどちらがトラン?
そのSQLで何を知りたいのか?
    • good
    • 0

どのテーブルの最終更新日が欲しいの?

この回答への補足あり
    • good
    • 0

SELECT MAX(更新日) FROM TBL


WHERE 品番='A-001'

みたいな感じでは?
この回答への補足あり
    • good
    • 0

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

関連するカテゴリからQ&Aを探す