• How to group by month from Date field using sql


    How to group by month from Date field using sql

    问题

    How can I group only by month from a date field (and not group by day)?

    Here is what my date field looks like:

    2012-05-01
    

    Here is my current SQL:

    select  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  Closing_Date, Category
    

    回答1

    I would use this:

    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;
    

    This will group by the first of every month, so

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

    will give '20130101'. I generally prefer this method as it keeps dates as dates.

    Alternatively you could use something like this:

    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;
    

    It really depends what your desired output is. (Closing Year is not necessary in your example, but if the date range crosses a year boundary it may be).

    回答2

    SQL Server 2012 version above,

    SELECT  format(Closing_Date,'yyyy-MM') as ClosingMonth,
            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 format(Closing_Date,'yyyy-MM'), Category;
    
  • 相关阅读:
    Linux系统中压缩与解压缩
    Linux系统中的信息查找命令
    Paraview处理fluent计算结果
    insert_stream 中的 insert_every报错
    LIGGGHTS出现错误提示ERROR: Volume expectancy too small
    影响CFD计算量的因素分析及在OpenFOAM中的参数调整
    常见物理量的单位在OpenFOAM中的形式
    LIGGGHTS运行命令
    汇编系列10-内存
    汇编系列9-通用寄存器
  • 原文地址:https://www.cnblogs.com/chucklu/p/14821412.html
Copyright © 2020-2023  润新知