日期:2014-05-18  浏览次数:20700 次

求按月分类统计的SQL
表a:
id         No                     CName
1         AB0701-001         A
2         AB0701-002         B
3         AB0702-001         C
4         SE0702-001         D
5         AB0703-001         B
6         SE0702-002         F

No开头2个字母是代号,07是年份,01是月份,-后面的是业务顺序号(有空号)
要求统计:按代号统计每个代号每月的业务量;按月份统计每个月的业务量,即:
按代号:
        代号                   月份             业务量
        AB                         1                     2
        AB                         2                     1
        AB                         3                     1
        SE                         2                     2
按月份
      月份                     代号               业务量
        1                           AB                   2
        2                           AB                   1
                                    SE                   2
        3                           AB                   1
按CName
        CName                 月份               业务量
        A                           1                     1



------解决方案--------------------
--按代號
select 代号 = left(No,2),月份 = substring(No,5,2), 业务量 = count(1) from a group by
代号,月份 order by left(No,2),substring(No,5,2)
--按月份
select 月份 = substring(No,5,2),代号 = left(No,2), 业务量 = count(1) from a group by
月份, 代号 order by substring(No,5,2),left(No,2)
--按CName
select CName,月份 = substring(No,5,2),业务量 = count(1) from a group by CName,月份
order by CName,substring(No,5,2)
------解决方案--------------------
create table test(id int,No varchar(20),CName varchar(10))
insert test select 1, 'AB0701-001 ',