我有一个包含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
有什么想法吗?谢谢
答案 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
的记录进行排名。然后,外部查询会根据排名分配正确的值。