• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL Server を使っています。SQLの質問です。)

SQL Serverで特定の商品に関する最新の売上明細データを得意先ごとに取得する方法

このQ&Aのポイント
  • SQL Serverを使用しており、特定の商品に関して得意先ごとに最新の売上明細データを抽出する方法を知りたいです。
  • 売上明細データには明細ID、得意先ID、商品ID、売上金額、売上日があります。
  • 特定の商品に関して得意先ごとの最新のデータだけを抽出するために、tokuisaki_idとsyohin_idを指定してデータを抽出するSQL文を試しましたが、うまくいきません。どなたかご指導いただけないでしょうか。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

#1です。訂正します。 SELECT t1.* FROM table_uri_meisai t1,  (select tokuisaki_id, max(uriage_date) saisin  FROM table_uri_meisai  WHERE syohin_id = 1  GROUP BY tokuisaki_id) t2 WHERE t1.tokuisaki_id = t2.tokuisaki_id AND t1.syohin_id = 1 AND t1.uriage_date = t2.saisin ORDER BY t1.meisai_id 商品ID=1以外も欲しいなら、 SELECT t1.* FROM table_uri_meisai t1,  (select tokuisaki_id, syohin_id, max(uriage_date) saisin  FROM table_uri_meisai  GROUP BY tokuisaki_id, syohin_id) t2 WHERE t1.tokuisaki_id = t2.tokuisaki_id AND t1.syohin_id = t2.syohin_id AND t1.uriage_date = t2.saisin ORDER BY t1.meisai_id (ORDER BY は適宜修正のこと)

panasobi
質問者

お礼

ほんとに早い回答、ありがとうございました。 使っているのは MS SQL Server ですが、 教えていただいたとおりやってみたところできました。 本当にありがとうございます。 ところで、今後のこともあって教えてもらいたいのですが、 「t1」とか「t2」とはどんな意味があったり、役割があるんでしょうか。 まだ初心者なんですが、自習した中でも「t1」や「t2」にあたるものは 今まで見たことありませんでした。 ついでに教えて下さい。 よろしくお願いします。

その他の回答 (2)

回答No.3

t1とかt2について これらは「alias」と言って、長いテーブル(またはテーブルと同じ働きと考えられるもの)に 対する別名です。 他にも列名に対しても使えます。 例. select publish,max(price) as 最大値,min(price) as 最小値 from dbo.book group by publish このように使うと(上で「最大値」「最小値」が列に付けたaliasです) publish   最大値 最小値 1 インプレス 3129 2625 2 秀和システム 3360 2520 3 翔泳社 4179 2940 のように出力されます。 また、同じテーブルでも別扱いできます。このことによって 自分自身のテーブルとの結合ができます。

panasobi
質問者

お礼

普通「as」をつけて使うエイリアスですね。 「as」を略して使うこともできるんですね。 丁寧に教えていただき、ありがとうございました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

Oracleだったらこんな感じ(無試験ですが) SELECT t1.* FROM table_uri_meisai t1,  (select tokuisaki_id, max(uriage_date) saisin  FROM table_uri_meisai  WHERE syohin_id = 1  GROUP BY tokuisaki_id) t2 WHERE t1.tokuisaki_id = t2.tokuisaki_id AND t1.uriage_date = t2.saisin ORDER BY t1.meisai_id 商品IDを変更する場合は、t2の中を修正のこと。

関連するQ&A