Đầu tiên, bạn cần tạo ngày tháng. Sau đó, bạn có thể tạo tất cả các kết hợp ngày và tên. Cuối cùng, điền vào các giá trị. Đây là một ví dụ sử dụng 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;