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

关于组合统计的问题(高手进)
本人想做一个组合统计,谁可以告诉我怎么实现

表如下形式:

id         sex         school         government       area    
-----------------------------------------
***         男           中学                 团员             北京
***         男           大学                 党员             上海
***         女           小学                 群众             北京
***         女           中学                 群众             天津
***         男           小学                 党员             上海
***         女           大学                 团员             北京
-------------------------------------------

现在想统计出一个列表,列表横轴和纵轴   分别可由以上4个字段中的一个或几个组合而成。

列表形式如下:

比如     由性别和学历组成的:

                                        性别
                      --------       -----------
                            男                   女

            小学         0                       1
 
            中学         2                       3
 
            大学         1                       2           (图中数字代表交叉统计的结果数)    


请高手帮帮忙。。。


------解决方案--------------------
--借用libin_ftsafe(子陌红尘:当libin告别ftsafe) 数据一用

create table t(id varchar(6),sex varchar(6),school varchar(6),government varchar(6),area varchar(6))
insert into t select '*** ', '男 ', '中学 ', '团员 ', '北京 '
insert into t select '*** ', '男 ', '大学 ', '党员 ', '上海 '
insert into t select '*** ', '女 ', '小学 ', '群众 ', '北京 '
insert into t select '*** ', '女 ', '中学 ', '群众 ', '天津 '
insert into t select '*** ', '男 ', '小学 ', '党员 ', '上海 '
insert into t select '*** ', '女 ', '大学 ', '团员 ', '北京 '
go


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= '群众 ' th