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

एसक्यूएल क्वेरी विशिष्ट तिथियों के रूप में तिथियों के बीच दिखा रही है + प्रत्येक तिथि से संबंधित डेटा!

आम तौर पर, मैं एक स्थिर कैलेंडर तालिका रखने का सुझाव दूंगा जिसमें तिथियों की अनुक्रमिक सूची हो। हालांकि, कैड रॉक्स के कैलेंडर तालिका बनाने के चतुर दृष्टिकोण का उपयोग करके, आपके पास कुछ ऐसा होगा:

;With Calendar As
    (
     Select Cast(Floor(Cast(@StartDate As float)) As datetime) As [Date]
     Union All
     Select DateAdd(d, 1, [Date])
     From Calendar
     Where DateAdd(d, 1, [Date]) < @EndDate
    )
Select C.[Date], R.Country, Sum(R.PeopleNeeded)
From Calendar As C
    Left Join Requests As R
        On C.[Date] Between R.[Start Date] And R.[End Date]
            And ( @Country Is Null Or R.Country = @Country )
Group By C.[Date], R.Country    
Option (MAXRECURSION 0); 

अब, यदि यह मामला है कि आप देश पर फ़िल्टर करना चाहते हैं, तो दिए गए देश के लिए केवल वही दिन लौटाए जाते हैं जिनके पास डेटा है, तो आपको बस लेफ्ट जॉइन को इनर जॉइन में बदलना होगा।

जोड़

टिप्पणियों से, सभी देशों को यह दिखाने का अनुरोध किया गया था कि उनके पास अनुरोध है या नहीं। ऐसा करने के लिए, आपको देशों की तालिका में शामिल होने की आवश्यकता है:

With Calendar As
    (
     Select Cast(Floor(Cast(@StartDate As float)) As datetime) As [Date]
     Union All
     Select DateAdd(d, 1, [Date])
     From Calendar
     Where DateAdd(d, 1, [Date]) < @EndDate
    )
Select C.[Date], C2.Country, Sum(R.PeopleNeeded)
From Calendar As C
    Cross Join Countries As C2
    Left Join Requests As R
        On C.[Date] Between R.[Start Date] And R.[End Date]
            And R.CountryId = C2.CountryId
Group By C.[Date], C2.Country    
Option (MAXRECURSION 0); 


  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 सर्वर (T-SQL) में datetime2 मान में समय क्षेत्र ऑफ़सेट जोड़ें

  2. SQL घटाना ठीक एक साल

  3. SQLCommand को पैरामीटर पास करने का सबसे अच्छा तरीका क्या है?

  4. java.library.path में कोई sqljdbc_auth नहीं है

  5. ASP.NET में C# का उपयोग करके डेटाबेस से बाइनरी इमेज कैसे प्राप्त करें?