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

sql . का उपयोग करके दिनांक फ़ील्ड से महीने के अनुसार समूह कैसे करें

मैं इसका उपयोग करूंगा:

SELECT  Closing_Date = DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0), 
        Category,  
        COUNT(Status) TotalCount 
FROM    MyTable
WHERE   Closing_Date >= '2012-02-01' 
AND     Closing_Date <= '2012-12-31'
AND     Defect_Status1 IS NOT NULL
GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0), Category;

यह हर महीने की पहली तारीख तक समूहित हो जाएगा, इसलिए

`DATEADD(MONTH, DATEDIFF(MONTH, 0, '20130128'), 0)` 

'20130101' देगा . मैं आमतौर पर इस पद्धति को पसंद करता हूं क्योंकि यह तारीखों को तारीखों के रूप में रखता है।

वैकल्पिक रूप से आप कुछ इस तरह इस्तेमाल कर सकते हैं:

SELECT  Closing_Year = DATEPART(YEAR, Closing_Date),
        Closing_Month = DATEPART(MONTH, Closing_Date),
        Category,  
        COUNT(Status) TotalCount 
FROM    MyTable
WHERE   Closing_Date >= '2012-02-01' 
AND     Closing_Date <= '2012-12-31'
AND     Defect_Status1 IS NOT NULL
GROUP BY DATEPART(YEAR, Closing_Date), DATEPART(MONTH, Closing_Date), Category;

यह वास्तव में निर्भर करता है कि आपका वांछित आउटपुट क्या है। (आपके उदाहरण में समाप्ति वर्ष आवश्यक नहीं है, लेकिन यदि दिनांक सीमा एक वर्ष की सीमा को पार कर जाती है तो यह हो सकता है)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रिलेशनल डेटाबेस में कस्टम फ़ील्ड के लिए डिज़ाइन पैटर्न

  2. एक्सेस में UNPIVOT का अनुकरण कैसे करें?

  3. इंट से कास्ट/कन्वर्ट क्यों एक तारक देता है

  4. क्वेरी ट्यूनिंग के साथ SQL गतिरोध से बचना:ब्रेंट ओज़ार की सलाह

  5. SQL सर्वर में सांख्यिकी समय क्या है?