日期:2014-05-17  浏览次数:20471 次

求一按月份统计 SQL语句

CREATE TABLE [test] (
[id] [bigint] IDENTITY (1, 1) NOT NULL ,
[Cdatetime] [datetime] NULL ,
[Cnum] [int] NULL ,
) ON [PRIMARY] 
insert into test 
select '2012-12-27',1 union all
select '2013-01-01',2 union all
select '2013-02-01',3 union all
select '2013-03-01', 4 union all
select '2013-04-01', 5 union all
select '2013-05-01', 6 
GO





现在对测试数据进行按月份统计,统计条件:上月22号到本月23号为一个月(2012-12-27属于2013年1月范围,依此类推)
想得到这样的结果 

月份     数量
1月份    3
2月份    3
3月份    4
4月份    5
5月份    6

SQL select 测试 统计

------解决方案--------------------
SELECT  
        CONVERT(VARCHAR, MONTH(CASE WHEN DAY(cdatetime) > 23
                                    THEN DATEADD(mm, 1, cdatetime)
                                    ELSE cdatetime
                               END)) + '月份' AS 月份 ,
        SUM(cnum) AS 数量
FROM    dbo.TEST
GROUP BY 
        CONVERT(VARCHAR, MONTH(CASE WHEN DAY(cdatetime) > 23
                                    THEN DATEADD(mm, 1, cdatetime)
                                    ELSE cdatetime
                               END))
                               
/*月份 数量
1月份 3
2月份 3
3月份 4
4月份 5
5月份 6*/