アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

A 回答 (5件)

テーブル名をXXXとすると次のようなSQLでよいと思います。

(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分
    • good
    • 34
この回答へのお礼

早々のご回答ありがとうございました。
inner joinを使えばよかったんですね。
希望通りのデータを取得することが出来ました!

お礼日時:2005/06/10 22:47

すいません、下の#4のSQLに1箇所間違いがありました。



select WK1.区分, WK1.年月,
    WK2.金額
 from テーブルA WK2,
    (select max(年月) as 年月,
        区分 as 区分
      from テーブルA
         ~~~~~~~~~~
    group by 区分) WK1
where WK2.区分 = WK1.区分
 and WK2.年月 = WK1.年月
    • good
    • 17
この回答へのお礼

ご回答ありがとうございました。
サブクエリーのうまく出来ず、悩んでいましたが
理解できました。
希望通りのデータを取得することが出来ました!

皆様、ありがとうございました。
いくつか方法を教えた頂きましたので、あとは実際に
早く取得できる方を使ってみようと思います。

お礼日時:2005/06/10 22:52

副問合せを使って以下のようなSQLではいかがでしょうか(^^;



select WK1.区分, WK1.年月,
WK2.金額
from テーブルA WK2,
(select max(年月) as 年月,
区分 as 区分
from テーブルB
group by 区分) WK1
where WK2.区分 = WK1.区分
and WK2.年月 = WK1.年月
    • good
    • 5

間違えました。



SELECT *,MAX(金額) FROM テーブル名 GROUP BY 区分

これでどうでしょうか?
    • good
    • 2
この回答へのお礼

ご回答ありがとうございました。
でも、これだと「年月が最大(最新)のデータ」と
いう条件がつかなかったです。

お礼日時:2005/06/10 22:44

年月をグループ化して、金額の最大値を取得ってところでしょうか?



SELECT *,MAX(金額) FROM テーブル名 GROUP BY 年月

これでどうでしょうか?
    • good
    • 11

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

このQ&Aを見た人はこんなQ&Aも見ています

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


このQ&Aを見た人がよく見るQ&A