Другим вариантом является вычисление дельты, добавление фиктивных нулевых дельт, восстановление промежуточного итога.Я изменил исходные данные, чтобы показать более распространенный случай
create table #t
(
year int,
month int,
qty_ytd int
);
insert #t(year, month, qty_ytd )
values
(2017, 01, 20),
(2017, 02, 30),
(2018, 04, 50) -- note month
;
select distinct year, month, sum(delta) over(partition by year order by month)
from (
-- real delta
select year, month, delta = qty_ytd - isnull(lag(qty_ytd) over (partition by year order by month),0)
from #t
union all
-- tally dummy delta
select top(24) 2017 + (n-1)/12, n%12 + 1 , 0
from
( select row_number() over(order by a.n) n
from
(values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) a(n),
(values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) b(n)
) c
)d
order by year, month;