假设数据库里有这么一张表
学号   姓名   性别   政治面貌   学历    所属省份
201    XX    男      党员     专科     四川
202    XX    女      党员     专科     河南
203    XX    男      团员     专科     河南
204    XX    男      党员     本科     河北
205    XX    男      团员     本科     山东
206    XX    女      民主党员 专科     湖南
207    XX    女      党员     专科     江西
208    XX    女      团员     本科     四川
...........
...........
当用户在选择“所属省份”字段中的  四川 和 河南 做为纵向字段
            “政治面貌”字段中的  团员 和 民主党员 做为横向字段
时候会得出下面的表: 
名称      团员    民主党员     合计
四川      XX      XX        XXX
河南      XX      XX        XXX
合计      XXX     XXX       XXX
这样能用一句SQL语句实现吗?
  
             

解决方案 »

  1.   

    拼sql语句,这个代码比较繁琐。
    用ssas,代码简单,但关键是你要会用bi
      

  2.   

    select case when 所属省份 is null then '合计' else 所属省份 end) as 名称,
    sum(case when 政治面貌='团员' then 1 else 0 end) as 团员,
    sum(case when 政治面貌='民主党员' then 1 else 0 end as 民主党员,
    sum(1) as 合计,
    from tb group by 所属省份 with rollup
      

  3.   

    谢谢你的代码,实现出来和老师要求的差不多  就是还有个问题:
    group by 所属省份 ;这样的话  会把所有省份的都统计出来做为纵向字段,
    但是程序只需要统计用户选择的省份,如我的例子里只选择 四川 和 河南,其他的省份不用管;
    能不能实现?望赐教!!!!