В течение 1-го квартала за последние 5 дней я немного разбирался с этим, вероятно, SQL Masters съедят меня заживо: -o, возможно, как-то связано с перекрестным применением, но вне моих текущих знаний.
with cte_table as
(
select * from
(values
('01-Jan-19',10)
,('02-Jan-19',20)
,('03-Jan-19',10)
,('04-Jan-19',5)
,('05-Jan-19',10)
,('06-Jan-19',20)
,('07-Jan-19',10)
,('08-Jan-19',10)
,('09-Jan-19',10)
,('10-Jan-19',5)
) as t (TheDate,TheValue))
, cte_table2 as
(
select TheDate, TheValue
,LAG(TheValue,1,0) OVER(ORDER BY TheDate) as Prev_Value1
,LAG(TheValue,2,0) OVER(ORDER BY TheDate) as Prev_Value2
,LAG(TheValue,3,0) OVER(ORDER BY TheDate) as Prev_Value3
,LAG(TheValue,4,0) OVER(ORDER BY TheDate) as Prev_Value4
from cte_table
)
select TheDate
,sum(TheValue) as current_day
, sum(TheValue) + sum(Prev_Value1) + sum(Prev_Value2) + sum(Prev_Value3) + sum(Prev_Value4) as [last 5 days]
from cte_table2
group by TheDate
order by TheDate
;