;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
Vous devez inventer les dates, j'ai donc utilisé ici une expression de table commune récursive.SQL Fiddle
Numéro MAXRECURSION
Spécifie le nombre maximal de récursions autorisées pour cette requête. nombre est un entier non négatif compris entre 0 et 32767. Lorsque 0 est spécifié, aucune limite n'est appliquée. Si cette option n'est pas spécifiée, la limite par défaut pour le serveur est de 100.
Lorsque le nombre spécifié ou par défaut pour la limite MAXRECURSION est atteint lors de l'exécution de la requête, la requête est terminée et une erreur est renvoyée.