आप इसे पुनरावर्ती CTE<के साथ कर सकते हैं /ए> . कुछ इस तरह:
DECLARE @startDate datetime = '2/1/2014'
DECLARE @endDate datetime = '2/6/2014'
;WITH DateRange(RunningDate) AS
(
SELECT @startDate AS RunningDate
UNION ALL
SELECT RunningDate + 1
FROM DateRange
WHERE RunningDate < @endDate
)
SELECT id, RunningDate date, value1, value2
FROM DateRange LEFT JOIN myTable ON myTable.date = DateRange.RunningDate
संपादित करें... यदि आप इस समाधान के साथ जाते हैं (मेरे उत्तर के तहत हारून बर्ट्रेंड की टिप्पणी पर ध्यान दें), ध्यान दें कि आपको अधिकतम पुनरावर्तन यदि आप 3 महीने से अधिक की अवधि से निपटने का इरादा रखते हैं। डिफ़ॉल्ट 100 पर सेट है। इसका मतलब है कि, जैसा कि वर्तमान में क्वेरी लिखी गई है, यह अधिकतम 101 तिथियां (पुनरावृत्ति के 100 स्तर) ही करेगी।
आप इसके अतिरिक्त OPTION (MAXRECURSION 0)
. निर्दिष्ट कर सकते हैं अंतिम के अंत में SELECT
इस पर काबू पाने के लिए। 0 का अर्थ है अनंत स्तर की पुनरावृत्ति। लेकिन फिर से, हारून की पोस्ट पर ध्यान दें।