【发布时间】:2020-05-01 22:11:26
【问题描述】:
我有一张桌子,看起来像这样
key fill store end_date status
1 123 1 2019-04-30 0
2 1234 1 2019-04-30 0
3 123 1 2019-05-01 0
现在我需要更新第一条记录并设置status=1,因为第三条记录具有相同的填充、存储值并且是最新的。
输出:
key fill store end_date status
1 123 1 2019-04-30 1
2 1234 1 2019-04-30 0
3 123 1 2019-05-01 0
我尝试计算row_number 并尝试根据它更新列,但无法弄清楚如何在更新子句中使用结果。
update t set
status = 1
from (
select *
from (
select *
, row_number() over (partition by fill, store order by end_dt desc) as row_num from t
) a
where row_num = 2
) b
此查询正在更新所有记录,我的查询应进行哪些更改才能获得预期结果?
【问题讨论】:
标签: sql sql-server database tsql sql-update