使用组的最大值更新列

Update column with the max of a group

在SQL服务器中,让我们考虑这个table:

Id PartNumber Timestamp Reintegration
1 1111 2020-01-01 NULL
2 1111 2020-01-02 NULL
3 2222 2021-02-01 NULL
4 2222 2021-02-02 NULL

我想用 Group By PartNumberMAX 值更新 Reintegration 列。

这是预期的结果:

Id PartNumber Timestamp Reintegration
1 1111 2020-01-01 NULL
2 1111 2020-01-02 2020-01-02
3 2222 2021-02-01 NULL
4 2222 2021-02-02 2021-02-02

我用 GROUP BYMAXINNER JOIN 尝试了很多东西,但都没有成功。

感谢您的帮助。

window 函数 max() over() 似乎很适合这里。

示例或dbFiddle

with cte as (
Select *
      ,MaxDate = max([TimeStamp]) over (partition by PartNumber) 
 from YourTable
)
Update cte set [Reintegration] = MaxDate
 Where [TimeStamp] = MaxDate

更新后Table

Id  PartNumber  Timestamp     Reintegration
1   1111        2020-01-01    NULL
2   1111        2020-01-02    2020-01-02
3   2222        2021-02-01    NULL
4   2222        2021-02-02    2021-02-02