;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
Sie müssen die Daten erfinden, daher habe ich hier einen rekursiven allgemeinen Tabellenausdruck verwendet.SQL Fiddle
MAXRECURSION-Nummer
Gibt die maximal zulässige Anzahl von Rekursionen für diese Abfrage an. Zahl ist eine nicht negative ganze Zahl zwischen 0 und 32767. Wenn 0 angegeben ist, wird kein Limit angewendet. Wenn diese Option nicht angegeben ist, ist das Standardlimit für den Server 100.
Wenn die angegebene oder Standardzahl für das MAXRECURSION-Limit während der Abfrageausführung erreicht wird, wird die Abfrage beendet und ein Fehler zurückgegeben.