在时间序列查询中选择月末值

时间:2018-01-29 10:26:02

标签: sql sql-server sql-server-2012

我有一张桌子,每日观察一些股票。

     DatePrice  date 
     IndexLevel float
     Stock      nvarchar(7)
     Weight     float

但是我只对股票的月末价值感兴趣。所以说我想在2017年的日期范围内查询该表我只想要返回12个观察值。但是,如果该月的最后一天是周末,则没有价值,因此需要获得该月的最后一个工作日。这可能吗?

1 个答案:

答案 0 :(得分:3)

month()功能与窗口功能一起使用

选择月份(dateprice)

select t.*
from (select t.*,
             row_number() over (partition by year(dateprice), month(dateprice)
                                order by dateprice desc
                               ) as seqnum
      from t
      where dateprice >= '2017-01-01' and dateprice < '2018-01-01'
     ) t
where seqnum = 1;