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

SQL क्वेरी सप्ताह, माह और वर्ष के आधार पर समूहीकृत रिकॉर्ड वापस करने के लिए। बिना रिकॉर्ड वाले सप्ताह 0 . लौटना चाहिए

डेमो उद्देश्य मैं तालिका नाम [DBO] के रूप में उपयोग कर रहा हूं। [FACTINTERNETSALES] और कॉलम [ORDERDATE] आपके लिए कॉलम [क्रिएटेडडेट] होगा। Fyi, यह SQL सर्वर में किया जाता है। [DBO] से

DECLARE @START INT,
        @END INT

SELECT @START   = CAST(CAST(MIN(ORDERDATE) AS DATETIME) AS INT) FROM [DBO].[FACTINTERNETSALES] 
SELECT @END     = CAST(CAST(MAX(ORDERDATE) AS DATETIME) AS INT) FROM [DBO].[FACTINTERNETSALES] 

--SELECT @START,@END

DECLARE @DATEDIM TABLE (ID INT IDENTITY(1,1) PRIMARY KEY, DATED DATETIME)
WHILE @START <= @END
BEGIN
    INSERT INTO @DATEDIM VALUES (CAST(@START AS DATETIME))
    SET @START = @START  + 1 
END

SELECT      LU.WEEK,LU.MONTH,LU.YEAR,ISNULL(MAIN.COUNT,0) [COUNT]
FROM        (
            SELECT      DATEPART(WEEK,DATED) [WEEK],DATEPART(MONTH,DATED) [MONTH],DATEPART(YEAR,DATED) [YEAR] 
            FROM        @DATEDIM
            GROUP BY    DATEPART(WEEK,DATED),DATEPART(MONTH,DATED),DATEPART(YEAR,DATED)) LU
LEFT JOIN
            (
            SELECT  [YEAR],[MONTH],[WEEK],COUNT(*) [COUNT] FROM
            (SELECT DATEPART(YEAR,ORDERDATE) [YEAR],
                    DATEPART(MONTH,ORDERDATE) [MONTH],
                    DATEPART(WEEK,ORDERDATE) [WEEK]
            FROM    [DBO].[FACTINTERNETSALES] ) LUINNER
            GROUP BY [YEAR],[MONTH],[WEEK]) MAIN 
ON
            LU.MONTH = MAIN.MONTH AND
            LU.YEAR = MAIN.YEAR AND
            LU.WEEK = MAIN.WEEK
ORDER BY    LU.YEAR,LU.MONTH,LU.WEEK

परिणाम: (परिणाम का केवल एक हिस्सा)




  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. SQL सर्वर 2008 एक ही डेटाबेस में दो तालिकाओं की तुलना करता है और कॉलम बदल जाता है

  3. MS SQL सर्वर में भूले हुए लेनदेन का स्वचालित विलोपन

  4. SSRS में आंतरिक मापदंडों का उपयोग करने के नियम क्या हैं

  5. दिनांक + समय से दिनांक प्राप्त करने के लिए SQL सर्वर में सबसे प्रभावी तरीका?