有时候我们需要做一些关于分季度的汇总数据,
如何在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