在SQL Server 2014上,我有一个表visits(id_visit, date, id_person)
我无法找到一种方法来获取聚合函数中每个人上次访问的id_
真的不知道它是否有帮助,但这就是我想要的东西
select *
from visits
where id_visit in (select id_visit, max(date) from visits group by id_person)
如果我喜欢访问(id_visit,id_person,date) 1,1, '2017年7月17日' 2,1, '2017年1月1日' 3,2, '2016年1月1日' 4,2, '2015年1月1日' 5,2, '2013-01-01' 我希望它返回1,3,5
答案 0 :(得分:1)
您可以使用ROW_NUMBER
:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER(PARTITION BY id_person ORDER BY date DESC) AS rn
FROM visits
)
SELECT *
FROM cte
WHERE rn = 1;
它将返回每人最后一次访问。
答案 1 :(得分:-1)
你需要更多的子选择:
SELECT *
FROM visits
WHERE id_visit IN (SELECT id_visit
FROM visits
WHERE date IN (SELECT max(date)
FROM visits
GROUP BY id_person))