Я бы сделал это, используя агрегацию и кумулятивную сумму:
select city, 'final' as [type], [month], sum(sum(value)) over (partition by city order by [month]) AS Value from table t group by city, month order by city, month;