Sql 在几年内每周获取最新条目
我有下表来存储实体的历史记录:Sql 在几年内每周获取最新条目,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有下表来存储实体的历史记录: Date Id State ------------------------------------- 2017-10-10 1 0 2017-10-12 1 4 2018-5-30 1 8 2019-4-1 2
Date Id State
-------------------------------------
2017-10-10 1 0
2017-10-12 1 4
2018-5-30 1 8
2019-4-1 2 0
2018-3-6 2 4
2018-3-7 2 0
我想在一周内获得每个Id的最后一个条目,例如
Date Id State
-------------------------------------
2017-10-12 1 4
2018-5-30 1 8
2019-4-1 2 0
2018-3-7 2 0
我会尝试通过以下方式使用分区:
但它仍然每周给我提供不止一个结果。您可以使用行编号:
select
ID
,Date
,State
,DatePart(week,Date) as weekNumber
from TableA
where Date = (
select max(Date) over (Partition by Id Order by DatePart(week, Date) Desc)
)
order by ID
SELECT a.*
FROM (SELECT a.*, ROW_NUMBER() OVER (PARTITION BY a.id, DATEPART(WK, a.Date) ORDER BY a.Date DESC) AS Seq
FROM tablea a
) a
WHERE seq = 1
ORDER BY id, Date;