ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3715381 区分ごとに2番目に新しいデータを取得するには?
質問者:todo36 下記のようなデータがあった場合、それぞれの区分毎に年月が最新のデータと2番目に最新のデータを取得したいです。

<検索対象データ>
区分 年月   金額
-----------------------------
A   200411  700
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100

<取得したいデータ>

(1)区分ことに年月が最新のデータ

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

(2)区分ことに年月が2番目に最新のデータ

区分 年月   金額
-----------------------------
A   200412  600
B   200504  560
C   200301  1100


(1)に関してはこちらに回答があります。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1439772

(2)のデータを取得する方法を教えていただきたい。
(1)と(2)の混在でもかまいません。
よろしくお願いします。
困り度:
  • すぐに回答を!
質問投稿日時:
08/01/26 16:13
この質問に対する回答は締め切られました。

回答良回答10pt

ANo.1 RDBMSは、ここのカテゴリ通りSQL Serverですか?
バージョンは?

もし、SQL Server 2005なら、分析関数でRANK()を使えるので、より簡単に記述できます。
回答者:chukenkenkou
種類:補足要求
どんな人:一般人
自信:参考意見
回答日時:
08/01/26 17:46
この回答への補足環境を書き忘れてすいません。
ミニマム環境は、SQL Server 2000 Desktop Engine (MSDE 2000) Release A です。
この回答へのお礼ありがとうございました。
とりあえず解決しました。
---
テーブルに連番列を追加

SELECT a.*
FROM テーブル a
WHERE 連番 IN (SELECT TOP 2 連番 FROM テーブル b WHERE b.区分 = a.区分 ORDER BY 日付 DESC)
ORDER BY a.区分