- ベストアンサー
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
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
プロシージャ形式ですと、次のようなものはいかがでしょう 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)に並び替え
その他の回答 (1)
- kero_mio
- ベストアンサー率90% (94/104)
http://oshiete1.goo.ne.jp/qa4089307.html にも、ご質問UPされていたので、念のため、こちらにも回答しておきますね。 ご提示頂いたテーブル名を「TEST」と定義してお話しますね。 いろんなやり方がありますが、私なら、 SELECT MAX(date), grade_id, point FROM TEST GROUP BY grade_id, point とかやりますね。試してないので確実ではないですが、 一度、上記のイメージでやってみてください。 ちなみに、関係ありませんが、「Disthinct」ではなく、「DISTINCT」が正しいスペルになりますので、今後スペルミスに気を付けてみてください。
お礼
誤って2重投稿してしまいましたが、わざわざこちらにもご回答ありがとうございました!
お礼
ご回答ありがとうございました! ご回答頂いたSQLを早速試してみようとしたのですが、 現在使用しているのがAccessのクエリでこちらではステートメントが正しくないとエラーが出てしまいました… 折角ご回答頂いたのにAccessのクエリとの事を説明不足で申し訳ありません。 VB等ほかの機会でSQLを使う際にこちらも参考にさせて頂きます。