有时候我们需要做一些关于分季度的汇总数据,
如何在SQL语句中直接得到结果呢?

先做个简单测试.
创建一张测试表 test

create table test(nian int,yue int,data int)

declare @y int,@m int,@d int
set @y=2002;
set @m=1;
set @d=1;

while @y<=2004
begin
    select @m=1
    while @m<=12
        begin
            insert into test(nian,yue,data) values(@y,@m,@d);
            select @m=@m+1;
        end
    select @y = @y+1;
end


主要的问题在于如何将不同的月份在 group by 中分组开来.

1,2,3 为第一季度,4,5,6...以此类推.

直接将 月/4 或 3 都无法刚好区分季度值,

解决的办法是 将 月份推前1月,从0开始, 012 ,  345 , 678 , 91011 刚好是除 3 得余数 0,1,2,3


OK,用下列的SQL解决即可:

select sum(data) as sumdata,1+(yue-1)/3 as season from test
group by 1+(yue-1)/3

查询的结果是:

sumdata season
9             1
9             2
9             3
9             4