sql >> データベース >  >> RDS >> Sqlserver

2つの日付の間の各日付のレコード数を計算します

    Dale Kの回答を改善するために、集計テーブルまたは関数を使用することをお勧めします。これは通常、パフォーマンスが高いためです。

    以下のItzikBen-Ganの有名なものを使用しました:

    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. PostgreSQLは部分インデックスを使用しません

    2. SQL Server(T-SQL)でパーティション化されたテーブルのパーティション化列を検索する

    3. SQL Serverで行レベルのロックを強制することは可能ですか?

    4. Oracleはエラー時にトランザクションをロールバックしますか?