Если у вас есть все даты в таблице, вы можете использовать данные из исходных таблиц. Используйте cross join
для генерации строк, а затем left join
, чтобы ввести значения:
select n.name, d.date, coalesce(t.value, 0) as value
from (select distinct name from t) n cross join
(select distinct date from t) d left join
t
on t.name = n.name and t.date = d.date;
Если некоторые даты полностью отсутствуют в таблице, вам понадобится календарная таблица или какой-то CTE для генерировать все даты.