HQT

追求.NET 技术永无止境

导航

使用 SQL 实现分季度查询汇总数据

Posted on 2005-09-26 10:54  HQT  阅读(1810)  评论(0编辑  收藏  举报

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