SQL - 对于任何给定的日期记录,select 之前记录的日期

SQL - for any given date record, select the date of the record prior

我有一个 table 与客户和 day_id。对于每一行,我想创建一个新列来显示客户在该特定行上的日期之前的最后一次访问日期。我想保留我的数据 table 中的每一行,如果该客户之前没有 day_id,我想保留 'NULL'。示例:

数据Table:
顾客day_id<br> 123 20180101 123 20190101 123 20180530 123 20181231 222 20180701 222 20180801

想要的结果:
客户day_idday_id_prior<br> 123 20180101 空 123 20190101 20181231 123 20180530 20180101 123 20181231 20180530 222 20180701 空 222 20180801 20180701

如有任何帮助,我们将不胜感激!

使用lagwindow函数。

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