Как я могу заменить сегодняшние данные будущей датой окончания? - PullRequest
0 голосов
/ 19 марта 2019

Недавно я получил решение для проблемы, связанной с датами окончания месяца.Теперь я хотел бы знать, есть ли способ предсказать будущие значения, используя сегодняшние данные в качестве ориентира.В качестве фона у меня есть значения данных для каждого дня в течение 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
...