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

SQLを使用して日付フィールドから月でグループ化する方法

    私はこれを使用します:

    SELECT  Closing_Date = DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0), 
            Category,  
            COUNT(Status) TotalCount 
    FROM    MyTable
    WHERE   Closing_Date >= '2012-02-01' 
    AND     Closing_Date <= '2012-12-31'
    AND     Defect_Status1 IS NOT NULL
    GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0), Category;
    

    これは毎月1日にグループ化されるため、

    `DATEADD(MONTH, DATEDIFF(MONTH, 0, '20130128'), 0)` 
    

    '20130101'を提供します 。日付を日付として保持するので、私は一般的にこの方法を好みます。

    または、次のようなものを使用することもできます:

    SELECT  Closing_Year = DATEPART(YEAR, Closing_Date),
            Closing_Month = DATEPART(MONTH, Closing_Date),
            Category,  
            COUNT(Status) TotalCount 
    FROM    MyTable
    WHERE   Closing_Date >= '2012-02-01' 
    AND     Closing_Date <= '2012-12-31'
    AND     Defect_Status1 IS NOT NULL
    GROUP BY DATEPART(YEAR, Closing_Date), DATEPART(MONTH, Closing_Date), Category;
    

    それは本当にあなたの望む出力が何であるかに依存します。 (この例では、年を閉じる必要はありませんが、日付範囲が年の境界を超える場合は、そうなる可能性があります)。



    1. Oracle SQL Developerを使用して実体関連(ER)図を生成する方法

    2. Flask-SQLAlchemy小文字インデックス-スキップ機能、SQLAlchemyリフレクションではサポートされていません

    3. SisenseでのJavaデータの操作

    4. 最高のMySQLDigitalOceanパフォーマンス–ScaleGridとDigitalOceanマネージドデータベース