;with d(date) as (
select cast('10/01/2012' as datetime)
union all
select date+1
from d
where date < '10/15/2012'
)
select t.ID, d.date CDate, isnull(t.val, 0) val
from d
left join temp t
on t.CDate = d.date
order by d.date
OPTION (MAXRECURSION 0) -- use this if your dates are >99 days apart
Musíte vytvořit data, takže jsem zde použil rekurzivní společný tabulkový výraz.SQL Fiddle
MAXRECURSION číslo
Určuje maximální počet rekurzí povolených pro tento dotaz. číslo je nezáporné celé číslo mezi 0 a 32767. Je-li zadáno 0, nepoužije se žádné omezení. Pokud tato možnost není zadána, výchozí limit pro server je 100.
Když je během provádění dotazu dosaženo zadaného nebo výchozího čísla pro limit MAXRECURSION, dotaz se ukončí a vrátí se chyba.