質問 |
||
| 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.区分 |