Рассмотрим:
select
v.variable,
d.date,
coalesce(t.match, 100) match
from (select distinct variable from mytable) v
cross join mydates d
left join mytable t
on t.varDate = d.date
and t.variable = v.variable
Это работает сначала cross join
, используя различные значения variable
, доступные в таблице с таблицей, которая ссылается на даты (я назвал это mydates
). Это создает все возможные комбинации дат и переменных.
Затем мы вводим исходную таблицу (я предположил mytable
) с left join
. Наконец, мы используем coalesce()
, чтобы назначить значение по умолчанию для пропущенных match
es.
В идеале у вас должна быть справочная таблица для variable
s, что позволит избежать необходимости в distinct
подзапрос:
select
v.variable,
d.date,
coalesce(t.match, 100) match
from myvariables v
cross join mydates d
left join mytable t
on t.varDate = d.date
and t.variable = v.variable