• ベストアンサー

SQLの質問です

SQL初心者の質問です。下記のように違うdateを持つ同じgrade_idがいくつか存在するテーブルから、最新のdateのgrade_idを選択してその列の他の情報(point)も持って来たい場合、どんなSQL文が最適でしょうか?Disthinctを使ってもうまくできずに困っています…よろしくお願い致します。 id ・ date ・ grade_id ・ point 1 ・ 2008/05/01 ・ 1 ・ 6 2 ・ 2008/10/01 ・ 1 ・ 1 3 ・ 2000/08/08 ・ 2 ・ 2 4 ・2008/05/01 ・ 2 ・ 8

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

  • ベストアンサー
  • graf_
  • ベストアンサー率61% (51/83)
回答No.1

プロシージャ形式ですと、次のようなものはいかがでしょう DECLARE @grade_id int, @point int SELECT TOP(1) @grade_id = grade_id, @point = point   FROM [テーブル名]   ORDER BY date DESC これで、@grade_id,@point に最新のデータのものが入ります。 ※解説 TOP(1) ・・・ 最初の一行目のみを選択 ORDER BY date DESC ・・・ dateを降順(DESC)に並び替え

noname#169207
質問者

お礼

ご回答ありがとうございました! ご回答頂いたSQLを早速試してみようとしたのですが、 現在使用しているのがAccessのクエリでこちらではステートメントが正しくないとエラーが出てしまいました… 折角ご回答頂いたのにAccessのクエリとの事を説明不足で申し訳ありません。 VB等ほかの機会でSQLを使う際にこちらも参考にさせて頂きます。

その他の回答 (1)

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.2

http://oshiete1.goo.ne.jp/qa4089307.html にも、ご質問UPされていたので、念のため、こちらにも回答しておきますね。 ご提示頂いたテーブル名を「TEST」と定義してお話しますね。 いろんなやり方がありますが、私なら、 SELECT  MAX(date),  grade_id,  point FROM TEST GROUP BY  grade_id,  point とかやりますね。試してないので確実ではないですが、 一度、上記のイメージでやってみてください。 ちなみに、関係ありませんが、「Disthinct」ではなく、「DISTINCT」が正しいスペルになりますので、今後スペルミスに気を付けてみてください。

noname#169207
質問者

お礼

誤って2重投稿してしまいましたが、わざわざこちらにもご回答ありがとうございました!

関連するQ&A