• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:クエリで2つずつ取り出す方法について)

クエリで2つずつ取り出す方法について

このQ&Aのポイント
  • WindowsXP、Access2003を使用している場合、テーブルの中からCODEごとに日付の若いものから2行ずつ取り出す方法について教えてください。
  • クエリを使用して、テーブルの中からCODEごとに日付の若いものから2行ずつ抽出し、1つしか存在しない場合は1行のみ抽出する方法について教えてください。
  • クエリを使用してテーブルの中からCODEごとに日付の若いものから2行ずつ取り出す方法と、1つしか存在しない場合は1行のみ抽出する方法について教えてください。

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

上記レイアウトでレコードに重複がない場合なら以下で可能です。 SELECT CODE, 日付 FROM テーブル1 AS t WHERE (SELECT COUNT(*) FROM テーブル1 WHERE CODE=t.CODE AND 日付<=t.日付)<=2

tokonoko
質問者

補足

回答ありがとうございます。 今回もお世話になります。 教えていただいたSQL文の動作について理解の確認をしたいのですが、 初めに >SELECT >CODE, 日付 >FROM テーブル1 AS t から1件抽出され(A、20080101)、 それが >WHERE (SELECT COUNT(*) FROM テーブル1 WHERE CODE=t.CODE > AND 日付<=t.日付)<=2 で評価される(1件目なので<=2はOK、3件目以降はNGとなる)。 という理解で正しいでしょうか。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

理解はあっていますが、言いかえると 「同じCODEで自分(=データ)の日付と同じか古いデータが2件以下の場合は抽出する」ということです。 (ここには当然自分自身も含まれます)

tokonoko
質問者

お礼

理解できました。 いろいろ応用できそうです。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A