sql >> Databasteknik >  >> RDS >> Sqlserver

Beräkna antalet poster för varje datum mellan 2 datum

För att förbättra Dale K:s svar föreslår jag att du använder en sammanställningstabell eller funktion, eftersom denna vanligtvis är mer presterande.

Jag har använt Itzik Ben-Gans välkända nedan:

DECLARE @StartDate date = '2020-11-01', @EndDate date = '2021-02-22';

  WITH
    L0 AS ( SELECT 1 AS c 
            FROM (VALUES(1),(1),(1),(1),(1),(1),(1),(1),
                        (1),(1),(1),(1),(1),(1),(1),(1)) AS D(c) ),
    L1 AS ( SELECT 1 AS c FROM L0 AS A CROSS JOIN L0 AS B ),
    L2 AS ( SELECT 1 AS c FROM L1 AS A CROSS JOIN L1 AS B ),
    Nums AS ( SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rownum
              FROM L2 )
    Date_Range_T (d_range) AS (
      SELECT TOP(DATEDIFF(day, @StartDate, @EndDate) + 1)
          DATEADD(day, rownum - 1, @StartDate) AS d_range,
          DATEADD(day, rownum, @StartDate) AS d_rangeNext
      FROM Nums
    )
SELECT d_range, COUNT(Id) AS Total 
FROM Date_Range_T 
LEFT JOIN tbl_Support_Requests R
    ON R.CreatedDate >= T.d_range AND R.CreatedDate < T.d_rangeNext
GROUP BY d_range
ORDER BY d_range ASC


  1. SQL Server - Hur man låser en tabell tills en lagrad procedur avslutas

  2. APPEND_ONLY_STORAGE_INSERT_POINT-spärren

  3. 6 sätt att kontrollera om en tabell finns i SQL Server (T-SQL-exempel)

  4. Hur man ställer in asynkron replikering mellan MySQL Galera-kluster