如何用今天的数据代替将来的结束日期?

时间:2019-03-19 19:45:21

标签: sql sql-server average prediction

我最近收到solution的问题,涉及月底日期。现在,我想知道是否存在一种以今天的数据为参考点来预测未来价值的方法。作为背景,我有90天内的每一天的数据值,而我只对月底的日期感兴趣。我希望能够查看特定时期甚至未来,并预测下3个月底的值。

例如,对于特定规则,我需要计算3 / 31、4 / 30和5/31的月末值。只有3/19。我想使用下面的查询说,如果没有结束月结,请使用今天的值。如果1月末已过,则使用该值加上今天的值* 2,然后除以3得到每日平均值。

/* sample SQL below! */

DECLARE @y INT = Year(Getdate()) 
DECLARE @RuleBegin DATETIME = (SELECT Datefromparts (@y, 3, 1)) 
DECLARE @RuleEnd DATETIME = (SELECT Datefromparts (@y, 5, 31)) 
DECLARE @startDate DATETIME = (SELECT CASE 
            WHEN Getdate() > @RuleBegin THEN @RuleBegin 
            ELSE Dateadd(dd, -90, Getdate()) 
          END) 

SELECT sub.Instrument, 
       (Sum(sub.GrossExposure) / 3)    AS AvgGrossExposure, 
FROM   (SELECT EOMONTH(DateField) AS EndOfMonthDate,
               DateField, 
               Instrument,  
               GrossExposure,                
        FROM   table
        WHERE  DateField BETWEEN @startDate AND Getdate()
        ) sub 
WHERE  sub.DateField = EndOfMonthDate
GROUP BY sub.Instrument

0 个答案:

没有答案