SQLで、ある期間内の最新レコードを取得したいです。
例えば、2015~2019年までに、個人が複数レコード記録されているデータから、
2018年で絞った最新レコードをidごとに取得するイメージです。
WHEREの中にサブクエリとして、BETWEENで2018年の最新レコードを取得し、
INを使って書いてみたのですが、うまく動かないようで、、
例えば、以下のようにデータセットであれば、
<table> |date |id | x1| x2| |:----------|:---|--:|--:| |2018-04-19 |A84 | 91| 1| |2019-12-26 |A84 | 92| 1| |2018-08-23 |A84 | 70| 0| |2016-10-27 |A23 | 50| 1| |2017-01-12 |A27 | 92| 1| |2019-05-02 |A14 | 59| 1| |2016-07-21 |A69 | 87| 0| |2018-04-07 |A14 | 54| 1| |2018-07-21 |A14 | 59| 0| |2016-05-19 |A20 | 70| 0| <table> |date |id | x1| x2| |:----------|:---|--:|--:| |2018-08-23 |A84 | 70| 0| |2018-07-21 |A14 | 59| 0|という結果を取得したいです。
sql
1SELECT 2 * 3FROM 4 table AS t1 5WHERE 6 t1.date IN ( 7 SELECT 8 MAX(t2.date) 9 FROM 10 table AS t2 11 WHERE 12 t2.date BETWEEN '2018-01-01' AND '2018-12-31' 13 GROUP BY 14 t2.id 15 )
使っているのは、postgresqlです。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー