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

現在下記のようなテーブルが存在しております。

テーブル1・・・
ID |名前|日付
01|田中|3/16
02|田中|3/15
03|田中|3/14
04|山田|3/17
05|山田|3/16
06|鈴木|3/15
07|鈴木|3/14
・・・


名前が田中かつ日付が3/15日以前で最新を1件
名前が鈴木かつ日付が3/14日以前で最新を1件

上記のような検索を実行し、下記の結果を得たいと考えております。

ID |名前|日付
02|田中|3/15
07|鈴木|3/14

そのためのクエリの記述方法についてお伺いしてもよろしいでしょうか。
お手数ですが、どうぞよろしくお願いします。

A 回答 (1件)

SELECT ID, 名前, 日付 FROM (


SELECT ID, 名前, 日付,
ROW_NUMBER() OVER(PARTITION BY 名前
ORDER BY 日付 DESC) AS rank
FROM テーブル1
WHERE (名前 = '田中' AND 日付 <= '2021-03-15')
OR (名前 = '鈴木' AND 日付 <= '2021-03-14'))
WHERE rank = 1;
ってな感じでいかがでしょう。
    • good
    • 0

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

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