我遇到的情况是,每天都有从Yahoo!检索的股票价格!多个发行人的融资。合并后的数据存储在类似于以下内容的单个SQL表(tblstock)中:
Date Ticker Price
---------------------------------
18/06/2018 TWTR 46
19/06/2018 TWTR 44.950001
20/06/2018 TWTR 46.130001
21/06/2018 TWTR 45.240002
22/06/2018 TWTR 45.880001
25/06/2018 TWTR 44.169998
26/06/2018 TWTR 44.84
27/06/2018 TWTR 43.700001
28/06/2018 TWTR 44.790001
18/06/2018 NFLX 390.399994
19/06/2018 NFLX 404.980011
20/06/2018 NFLX 416.76001
...
如您所见,由于周末和节假日,缺少日期。我试图解决一种情况,即我拥有所有股票的所有日历日期。然后,当特定股票的特定日期没有价格时,查询将采用最近的收盘价。最终结果应类似于以下示例,其中TWTR的23/06/2018和24/06/2018的价格缺失:
22/06/2018 TWTR 45.880001
23/06/2018 TWTR 45.880001
24/06/2018 TWTR 45.880001
25/06/2018 TWTR 44.169998
我试图做的是连接到包含所有日历日期(tbldate)的表。然后,我尝试了以下代码来开始学习:
SELECT
d.date,
s.date,
ISNULL(s.ticker,s2. ticker) AS ticker,
ISNULL(s.price, s2.price) AS price
FROM
tbldate d
LEFT JOIN
tblStock s ON s.date = d.date
LEFT JOIN
tblStock s2 ON s.ticker IS NULL
ORDER BY
s.ticker, d.date ASC
未获得期望的结果,并且不确定下一步应该做什么。我正在使用SSMS 2017。