Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhóm SQL và Tổng theo tháng - Mặc định là 0

Trước đây, tôi đã giải quyết một vấn đề như thế này bằng cách tạo một bảng tạm thời sẽ chứa tất cả các ngày cần thiết:

    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

Sau đó, sửa đổi truy vấn của bạn để kết hợp với bảng này:

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

Sau đó, bạn sẽ có một bản ghi cho mỗi tháng, bất kể nó có tồn tại trong Khoảng không quảng cáo hay không.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. <table-value function> không phải là tên hàm tích hợp sẵn được công nhận

  2. Tôi có thể chuyển đối số tới trình kích hoạt SQL Server bên ngoài (CLR) không?

  3. Truy vấn Unicode SQL W / Tham số thay vì Tiền tố N

  4. Nhóm SQL - Chỉ hiển thị 5 nhận xét cho mỗi bài đăng

  5. truy vấn sql để thêm động tháng tài chính bằng cách sử dụng pivot