以固定时间间隔更新SQL Server表

时间:2020-03-27 18:18:05

标签: sql sql-server tsql sql-update

我有一个包含3列的表格:ID,日期和ColA

我想编写一个Sql查询,它每隔3天才会用另一个表中的值更新ColA,否则ColA值应为0。

查询应按ID分组。

Table 1

ID    Date           ColA
 1   2020/01/01      0
 1   2020/01/02      0
 1   2020/01/03      Run Update Query
 1   2020/01/04      0
 1   2020/01/05      0
 1   2020/01/06      Run Update Query
 2   2020/02/09      0
 2   2020/02/10      0
 2   2020/02/11      Run Update Query
 2   2020/02/12      0
 2   2020/02/13      0
 2   2020/02/14      Run Update Query

有什么想法吗?谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用窗口功能:

with cte as (
    select colA, row_number() over(partition by id order by date) rn
    from mytable
)
update cte 
set colA = case when rn % 3 = 0 then 'Run update query' else '0' end

公用表表达式(别名cte)通过增加id对具有相同date的记录进行排名。然后,外部查询会根据排名分配正确的值。