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

如何多组统计!
表t
  id         sex         school         government       area    
-----------------------------------------
***         男           中学                 团员             北京
***         男           大学                 党员             上海
***         女           小学                 群众             北京
***         女           中学                 群众             天津
***         男           小学                 党员             上海
***         女           大学                 团员             北京
-------------------------------------------
用一条sql语句输出如下结果(不能用创建表插入数据的形式)
学校         团员                   党员                   群众        
-----------   -----------  
大学         1                       1                       0                  
小学         0                       1                       1                    
中学         1                       0                       1                      



------解决方案--------------------

select 学校=school,
团员=sum(case when government= '团员 ' then 1 else 0 end),
党员=sum(case when government= '党员 ' then 1 else 0 end),
群众=sum(case when government= '群众 ' then 1 else 0 end)
from 表t
group by school
------解决方案--------------------
select school 学校,
sum(case when government = '团员 ' then 1 else 0 end) 团员,
sum(case when government = '党员 ' then 1 else 0 end) 党员,
sum(case when government = '群众 ' then 1 else 0 end) 群众
from t
group by school
------解决方案--------------------
declare @sql varchar(8000)
set @sql = 'select school 学校 '
select @sql = @sql + ' , sum(case government when ' ' ' + government + ' ' ' then Result end) [ ' + government + '] '
from (select distinct government from t) as a
set @sql = @sql + ' from t group by school '
exec(@sql)
------解决方案--------------------
create table 表t(id varchar(10),sex varchar(10),school varchar(10),gov