T-SQL –用先前的收盘价填补缺失的股价

时间:2018-07-18 01:59:51

标签: sql-server tsql finance stockquotes

我遇到的情况是,每天都有从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。

0 个答案:

没有答案