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

SQL समूह और महीने के हिसाब से राशि - शून्य के लिए डिफ़ॉल्ट

अतीत में, मैंने एक अस्थायी तालिका बनाकर इस तरह की एक समस्या का समाधान किया है जिसमें सभी आवश्यक तिथियां होंगी:

    CREATE TABLE #AllDates (ThisDate datetime null)
    SET @CurrentDate = @StartRange

    -- insert all dates into temp table
    WHILE @CurrentDate <=  @EndRange
        BEGIN
            INSERT INTO #AllDates values(@CurrentDate)
            SET @CurrentDate = dateadd(mm, 1, @CurrentDate)
        END

फिर, इस तालिका में शामिल होने के लिए अपनी क्वेरी को संशोधित करें:

SELECT      ALLItems.ItemId,
            SUM(COALESCE(Inventory.Qty, 0)) AS Individual_MonthQty,
            MONTH(#AllDates.ThisDate) AS Individual_MonthAsNumber,
            DATENAME(MONTH, #AllDates.ThisDate) AS Individual_MonthAsString
FROM        #AllDates
            JOIN (SELECT DISTINCT dbo.Inventory.ItemId FROM dbo.Inventory)  AS ALLItems ON 1 = 1
            LEFT JOIN Inventory ON DATEADD(dd, - DAY(Inventory.dadded) +1, Inventory.dadded) = #AllDates.ThisDate AND ALLItems.ItemId = dbo.Inventory.ItemId
WHERE       
            #AllDates.ThisDate >= @StartRange
AND         #AllDates.ThisDate <= @EndRange
GROUP BY    ALLItems.ItemId, 
            #AllDates.ThisDate

फिर आपके पास हर महीने का रिकॉर्ड होना चाहिए, भले ही वह इन्वेंट्री में मौजूद हो या नहीं।



  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. गतिशील रूप से #temp तालिका बनाना और फिर डेटा सम्मिलित करने के लिए उपयोग किया जाता है

  3. दिन के दो समय के बीच चयन करने की क्वेरी

  4. मैं SQL सर्वर में किसी चयन से अद्यतन कैसे करूं?

  5. SQL सर्वर:IN कथन में पैरामीटर द्वारा ऑर्डर करें