Zuerst müssen Sie die Daten generieren. Dann können Sie alle Kombinationen aus Datum und Name generieren. Geben Sie abschließend die Werte ein. Hier ist ein Beispiel mit cross apply
:
with dates as (
select @MINDATE as thedate
union all
select dateadd(day, 1, thedate)
from dates
where dateadd(day, 1, thedate) <= getdate()
)
select thedate, vals.val
from dates cross join
(select distinct name from hypothetical) h cross apply
(select top 1 val
from hypothetical h2
where h2.name = h.name and h2.date <= dates.thedate
order by date desc
) vals;