Если вам нужно ровно за день до этого, рассмотрите join
:
select t.*, tprev.load_count as prev_load_count
from t left join
t tprev
on tprev.timestamp = dateadd(day, -1, t.timestamp);
(Примечание. Если временная метка содержит компонент времени, вам необходимо преобразовать в дата.)
lag()
предоставляет данные из предыдущей строки . Если вы знаете, что у вас нет пробелов, то они эквивалентны. Однако, если есть разрывы, это возвращает NULL
в дни после разрыва. Похоже, это то, что вы просите.
Вы можете включить это или lag()
в обновление:
update t
set prev_load_count = tprev.load_count
from t join
t tprev
on tprev.timestamp = dateadd(day, -1, t.timestamp);