Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

दो तिथियों के बीच सभी दिनांक डेटा दिखाएं; यदि किसी विशेष तिथि के लिए कोई पंक्ति मौजूद नहीं है तो सभी कॉलम में शून्य दिखाएं

;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 सीमा के लिए निर्दिष्ट या डिफ़ॉल्ट संख्या तक पहुंच जाती है, तो क्वेरी समाप्त हो जाती है और एक त्रुटि वापस आ जाती है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मुझे एक SQL सर्वर प्रतिकृति प्रोजेक्ट पर गलत प्रारूप त्रुटि वाले प्रोग्राम को लोड करने का प्रयास किया गया था

  2. क्लाउड वर्चुअल मशीन की तुलना प्रबंधित क्लाउड डेटाबेस से करना

  3. SQL सर्वर में DECODE () फ़ंक्शन

  4. SQL सर्वर हमेशा उपलब्धता समूह पर:स्थापना और कॉन्फ़िगरेशन, भाग 2

  5. केस सेंसिटिव GROUP BY कैसे करें?