我有一个带有customer和day_id的表。对于每一行,我想创建一个新列以显示客户在该特定行的日期之前的上次访问日期。我想保留数据表中的每一行,如果该客户没有以前的day_id,则为'NULL'。例如:
数据表:
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
任何帮助将不胜感激!
答案 0 :(得分:0)
使用lag
窗口功能。
select t.*,lag(day_id) over(partition by customer order by day_id) as prev_dayid
from tbl t