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
如有任何帮助,我们将不胜感激!
使用lag
window函数。
select t.*,lag(day_id) over(partition by customer order by day_id) as prev_dayid
from tbl t
我有一个 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
如有任何帮助,我们将不胜感激!
使用lag
window函数。
select t.*,lag(day_id) over(partition by customer order by day_id) as prev_dayid
from tbl t