我有一个数据集(如下所示)。
SELL_DATE PRODUCT_CODE OLD_PRICE NEW_PRICE
01/01/2016 A1 20 25
02/01/2016 A1 18 23
03/01/2016 A1 20 25
10/01/2016 A1 30 37
17/01/2016 A1 33 38
20/01/2016 A1 40 55
01/01/2016 A2 100 113
02/01/2016 A2 100 119
03/01/2016 A2 99 118
10/01/2016 A2 115 150
17/01/2016 A2 120 152
20/01/2016 A2 130 175
我的输出数据集应该有一个字段,可以在销售日期前10天提取产品的旧价格。它应如下所示:
SELL_DATE PRODUCT_CODE OLD_PRICE NEW_PRICE OLD_PRICE_10_DAYS_AGO
01/01/2016 A1 20 25 -
02/01/2016 A1 18 23 -
03/01/2016 A1 20 25 -
10/01/2016 A1 30 37 20
17/01/2016 A1 33 38 -
20/01/2016 A1 40 55 30
01/01/2016 A2 100 113 -
02/01/2016 A2 100 119 -
03/01/2016 A2 99 118 -
10/01/2016 A2 115 150 100
17/01/2016 A2 120 152 -
20/01/2016 A2 130 175 115
我已经尝试了由product_code分区的滞后函数,但是为了让滞后函数在10天的间隙期间工作而停留。请帮忙。
答案 0 :(得分:1)
只需使用left join
:
select t.*, t10.old_price
from t left join
t t10
on t.productcode = t10.productcode and
t.selldate = dateadd(day, 10, t10.selldate);