;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
आपको तिथियां बनाने की आवश्यकता है, इसलिए मैंने यहां एक पुनरावर्ती सामान्य तालिका अभिव्यक्ति का उपयोग किया है। SQL Fiddle
<ब्लॉकक्वॉट>MAXRECURSION नंबर
इस क्वेरी के लिए अनुमत रिकर्सन की अधिकतम संख्या निर्दिष्ट करता है। संख्या 0 और 32767 के बीच एक गैर-ऋणात्मक पूर्णांक है। जब 0 निर्दिष्ट किया जाता है, तो कोई सीमा लागू नहीं होती है। यदि यह विकल्प निर्दिष्ट नहीं है, तो सर्वर के लिए डिफ़ॉल्ट सीमा 100 है।
जब क्वेरी निष्पादन के दौरान MAXRECURSION सीमा के लिए निर्दिष्ट या डिफ़ॉल्ट संख्या तक पहुंच जाती है, तो क्वेरी समाप्त हो जाती है और एक त्रुटि वापस आ जाती है।