以固定时间间隔更新表 SQL Server
Posted
技术标签:
【中文标题】以固定时间间隔更新表 SQL Server【英文标题】:Update Table at fixed interval of Time SQL Server 【发布时间】:2020-03-27 18:18:05 【问题描述】:我有一个包含 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】:你可以使用窗口函数:
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
公用表表达式(aliasedcte
) 通过增加date
对具有相同id
的记录进行排名。然后,外部查询根据排名分配正确的值。
【讨论】:
以上是关于以固定时间间隔更新表 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章
SQL 在 SQL Server 和 Oracle 中返回固定数据