У вас есть две проблемы - создание строк и накопительные суммы. Позвольте предположить, что в таблице есть все периоды времени, которые вы хотите, или у вас есть другая таблица с ними. Затем используйте cross join
для генерации строк и кумулятивной суммы результатов:
select d.dateday, i.id,
sum(t.value) over (partition by i.id order by d.dateday) as running_sum
from (select distinct dateday from t) d cross join
(select distinct id from t) i left join
t
on t.dateday = d.dateday and t.id = i.id
order by d.dateday, i.id;
Если у вас есть другие таблицы с днями или идентификаторами, используйте их вместо подзапросов.
Когда у вас есть все дни, вы можете включить предложение оконной рамы:
sum(t.value) over (partition by i.id order by d.dateday rows between 6 preceding and current day) as running_sum