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

高级嵌套分组查询统计
表A的内容如下:      
    编号       类别             数值      
        1           A                   90      
        2           A                   75      
        3           A                   85      
        4           B                   88      
        5           C                 100  
        6           C                   60
       
    要求最后的查询结果为:      
    类别         总数量       数值 <90的个数   数值 <80的个数
    A                 3                     3                               1
    B                 1                     1                               0
    C                 2                     1                               1
    即分别统计各类别的总数量和各类别在不同的数值段的个数,怎样用SQL语句进行查询呢?用  
select   类别,count(*)   as   总数量   from   A   group   by   类别  
只能进行总数量的统计,怎样同时查询各类别在不同的数值段的个数?

------解决方案--------------------
--access与SQL Server不同,应按如下:

select
类别,
count(*) as 总数量,
sum(iif(数值 <=90,1,0)) as [数值 <90的个数],
sum(iif(数值 <80,1,0)) as [数值 <80的个数],
sum(iif(80 <数值 and 数值 <90,1,0)) as [80 <数值 <90的个数]
from A
group by 类别