在给定日期之前加入最新值

时间:2018-08-16 09:06:21

标签: sql amazon-redshift

我有一张价格表:

ticker | date       | price
 X     | 2018-06-30 | 100
 X     | 2018-03-31 | 200
 X     | 2018-01-30 | 300

以及另一个在行情清单和日期上键入的其他数据表:

ticker | date       | other data
 X     | 2018-04-01 | 12
 X     | 2018-03-31 | 25
 X     | 2018-03-30 | 65

我想将第二个表格以该价格的最新价格加入到该日期之前或等于该日期,例如:

ticker | date       | other data | price
 X     | 2018-04-01 | 12         | 200
 X     | 2018-03-31 | 25         | 200
 X     | 2018-03-30 | 65         | 300

我正在使用Redshift,但是任何SQL方言都会有所帮助

1 个答案:

答案 0 :(得分:0)

您可以使用 correlated subquery

select t.*, (select p.price
             from price p
             where p.ticker = t.ticker and p.date <= t.date
             order by p.date desc
             limit 1
            ) as price
from table t;

编辑:如果您也想要date,则可以执行JOIN

select t.*, p.price, p.date
from table t inner join
     price p
     on p.ticker = t.ticker
where p.date = (select p1.date
                from price p1
                where p1.ticker = t.ticker and p1.date <= t.date
                order by p1.date desc 
                limit 1
               );