使用滞后函数检索特定间隙期间的日期之间的值

时间:2017-03-07 13:00:30

标签: sql sql-server

我有一个数据集(如下所示)。

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天的间隙期间工作而停留。请帮忙。

1 个答案:

答案 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);