• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access 最新から2件分の日付)

Accessで最新の2件の日付を取得する方法

このQ&Aのポイント
  • Accessでテーブルから最新の2件の日付を取得する方法について解説します。
  • 具体的には、IDごとに最新の日付を2件ずつ抽出する方法をご紹介します。
  • クエリを使用して、目的の結果を簡単に得ることができます。

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

  • ベストアンサー
回答No.4

IDごとにそれぞれ2件ずつ表示させたいということですね。先程のクエリに別のクエリを以下のとおり差分で最大を出せば2件目の最大が抽出されますので1回目に抽出したファイルとマージして1つのテーブルにすればできます。 SELECT テーブル1.ID, Max(テーブル1.日付) AS 日付の最大1 INTO 抽出2 FROM テーブル1 LEFT JOIN 抽出 ON (テーブル1.ID = 抽出.ID) AND (テーブル1.日付 = 抽出.日付の最大) GROUP BY テーブル1.ID, 抽出.ID HAVING (((抽出.ID) Is Null)) ORDER BY テーブル1.ID; クエリは3回実行することになりますが、マクロで実行すれば簡素化できます。

fns
質問者

お礼

ありがとうございました。とても助かりました。

その他の回答 (3)

回答No.3

抽出するのであれば、 例えば、項目はID、日付でテーブル名はテーブル1とした場合 SQLビューで書けば SELECT テーブル1.ID, Max(テーブル1.日付) AS 日付の最大 INTO 抽出 FROM テーブル1 GROUP BY テーブル1.ID ORDER BY テーブル1.ID; テーブル2というテーブル名で抽出されます。 こうすれば如何でしょう。

fns
質問者

補足

回答ありがとうございます。 さっそく試したみたのですが、それぞれのIDの最大値1件分のみ表示されました。 すみません。説明不足でした。 IDごとにそれぞれ2件ずつ表示させたいのです。

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

実行性能は分かりませんが、以下でどうでしょう SELECT T1.* FROM テーブル名 AS T1 WHERE T1.日付 IN (SELECT TOP 2 Q1.日付 FROM テーブル名 AS Q1 WHERE Q1.ID = T1.ID ORDER BY Q1.日付 DESC) ORDER BY T1.ID, T1.日付 DESC; ※ 2か所のテーブル名は、実際のものに置き換えてください

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.1

1. IDでグループ化て最大日付を求めたクエリーを作成 2. 上記で作成したクエリーと一致するレコードを除いたもので1.同様にIDでグループ化、最大日を求めるクエリーを作成 3. 1.と2.で作成した物をUNIONクエリーで読み込む こうすれば出来ませんか これを1SQLで書くことも出来ると思いますが

fns
質問者

補足

素早いご回答ありがとうございます。 もう少し詳しく教えていただきたいのですが > 2. 上記で作成したクエリーと一致するレコードを除いたもので というのは、不一致クエリなどで作成するのでしょうか?

関連するQ&A

専門家に質問してみよう