SQL - для любой заданной даты, выберите дату предыдущей записи - PullRequest
0 голосов
/ 31 января 2019

У меня есть таблица с customer и day_id.Для каждой строки я хочу создать новый столбец, в котором будет отображаться дата последнего посещения клиента до даты в этой конкретной строке.Я хочу сохранить каждую строку в моей таблице данных и иметь значение NULL, если для этого клиента не было предыдущего day_id.пример:

Таблица данных:
customer day_id<br> 123 20180101 123 20190101 123 20180530 123 20181231 222 20180701 222 20180801

Желаемый результат:
customer day_id day_id_prior<br> 123 20180101 NULL 123 20190101 20181231 123 20180530 20180101 123 20181231 20180530 222 20180701 NULL 222 20180801 20180701

Любая помощь будет оценена!

1 Ответ

0 голосов
/ 31 января 2019

Используйте lag оконную функцию.

select t.*,lag(day_id) over(partition by customer order by day_id) as prev_dayid
from tbl t
...