Обновление таблицы с фиксированным интервалом времени SQL Сервер - PullRequest
0 голосов
/ 27 марта 2020

У меня есть таблица с 3 столбцами: ID, дата и ColA

Я хочу написать запрос Sql, который обновит ColA значением из другой таблицы только через каждые 3 дня, иначе значение 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 Ответ

1 голос
/ 27 марта 2020

Вы можете использовать оконные функции:

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. Затем внешний запрос назначает правильное значение в зависимости от ранга.

...