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;