Если вы хотите добавить два месяца к данным, вы можете использовать union all
:
select Date, Cost, Returning_Month, Revenue, Product
from t
union all
select Date, Cost, dateadd(month, v.n, Returning_Month), 0 as Revenue, Product
from (select date, cost, max(returning_month) as returning_month, revenue, product
from t
group by date, cost, revenue, product
) t cross apply
(values (1), (2)) v(n);
EDIT:
Использовать рекурсивный CTE:
with cte as (
select date, cost, max(returning_month) as returning_month, revenue, product, 0 as lev
from t
group by date, cost, revenue, product
union all
select date, cost, dateadd(month, 1, returning_month), revenue, product, lev + 1
from cte
where returning_month < getdate()
)
select date, cost, returning_month, revenue, product
from cte
where lev > 0;