我有一张价格表:
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方言都会有所帮助
答案 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
);