select 
单位 = (CAST grouping(单位) WHEN 1 THEN '总计' ELSE 单位),
本科 = sum (CASE(学历 WHEN '本科' THEN 1 ELSE 0 END)),
硕士 = sum (CASE(学历 WHEN '硕士' THEN 1 ELSE 0 END)),
博士 = sum (CASE(学历 WHEN '博士' THEN 1 ELSE 0 END)),
总个数 = count(*)
from table
group by 单位 WITH ROLLUPfrom sql server未测试

解决方案 »

  1.   

    风舞清扬只是有笔误了。看下面的。
    select 
    单位 = (CASE grouping(单位) WHEN 1 THEN '总计' ELSE 单位 END),
    本科 = sum (CASE(学历 WHEN '本科' THEN 1 ELSE 0 END)),
    硕士 = sum (CASE(学历 WHEN '硕士' THEN 1 ELSE 0 END)),
    博士 = sum (CASE(学历 WHEN '博士' THEN 1 ELSE 0 END)),
    总个数 = count(*)
    from table
    group by 单位 WITH ROLLUPfrom sql server未测试
      

  2.   

    不好意思,上面还是有错误。下面的应该对了select 
    单位 = (CASE grouping(单位) WHEN 1 THEN '总计' ELSE 单位 END),
    本科 = sum (CASE 学历 WHEN '本科' THEN 1 ELSE 0 END),
    硕士 = sum (CASE(学历 WHEN '硕士' THEN 1 ELSE 0 END),
    博士 = sum (CASE 学历 WHEN '博士' THEN 1 ELSE 0 END),
    总个数 = count(*)
    from table
    group by 单位 WITH ROLLUP
      

  3.   

    谢谢,这么长的语句用query怎么写啊
    :)先加分