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

0 गिनती के साथ गिनती चुनें

केएम के उत्तर पर विस्तार करते हुए, आपको एक तिथि तालिका की आवश्यकता है जो एक संख्या तालिका की तरह है। वेब पर कई उदाहरण हैं लेकिन यहां एक सरल है।

CREATE TABLE DateList (
 DateValue DATE,
 CONSTRAINT PK_DateList PRIMARY KEY CLUSTERED (DateValue)
 )
 GO
 -- Insert dates from 01/01/2015 and 12/31/2015
 DECLARE @StartDate DATE = '01/01/2015'
 DECLARE @EndDatePlus1 DATE = '01/01/2016'
 DECLARE @CurrentDate DATE = @StartDate

 WHILE @EndDatePlus1 > @CurrentDate
    BEGIN
    INSERT INTO DateList VALUES (@CurrentDate)
    SET @CurrentDate = DATEADD(dd,1,@CurrentDate)
    END

अब आपके पास एक टेबल है

तो आप अपनी क्वेरी को इस प्रकार फिर से लिख सकते हैं:

SELECT top (5)  DateValue, isnull(Count(id),0) as Counted
FROM DateList 
LEFT OUTER JOIN Table
  on DateValue = CAST(Created AS DATE) 
GROUP BY DateValue
order by DateValue desc

दो नोट:आपको अपनी सीमा निर्दिष्ट करने के लिए जहां एक खंड की आवश्यकता होगी। एक कलाकार में शामिल होना आदर्श नहीं है। आपकी तिथि तालिका का प्रकार आपकी नियमित तालिका के प्रकार से मेल खाना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एमएस एसक्यूएल सर्वर 2008 के लिए पोर्ट कैसे खोजें?

  2. दो कॉलम के डुप्लिकेट डेटा के लिए सम्मिलन को रोकने के लिए ट्रिगर

  3. चैट डेटा को डेटाबेस में सहेजने का एक अच्छा विचार क्या है?

  4. कोड-प्रथम को हमेशा एक अस्तित्वहीन डेटाबेस प्रारंभ करने के लिए मजबूर करना?

  5. पेटा पोको जहां क्लॉज