SQL - для любой заданной даты, выберите дату предыдущей записи
У меня есть таблица с клиентом и day_id. Для каждой строки я хочу создать новый столбец, в котором будет отображаться дата последнего посещения клиента до даты в этой конкретной строке. Я хочу сохранить каждую строку в моей таблице данных и иметь значение NULL, если для этого клиента не было предыдущего day_id. пример:
Таблица данных:customer day_id
123 20180101
123 20190101
123 20180530
123 20181231
222 20180701
222 20180801
Желаемый результат:customer day_id day_id_prior
123 20180101 NULL
123 20190101 20181231
123 20180530 20180101
123 20181231 20180530
222 20180701 NULL
222 20180801 20180701
Любая помощь будет оценена!
1 ответ
Использование lag
оконная функция.
select t.*,lag(day_id) over(partition by customer order by day_id) as prev_dayid
from tbl t