日期:2014-05-17  浏览次数:20473 次

group by 分组问题
select title,count(Title),count(TutorType),COUNT(Degree) from TeamInfo group by Title

比如我有一个TeamInfo 表 表数据为 
  id   name     title     tutortype     degree
  1    张三      教授       博导            博士
  2    李四      副教授     硕导            硕士
  3    张四      讲师       硕导            博士
  4    张五       讲师                       硕士
  5    张六       教授       博导            博士
  6    张七       讲师       硕导            博士

现在我想统计出下面的形式,分别统计出职称的数据。
  职称       人数    博导     硕导   博士学位   硕士学位   
  教授       2      2       0      2        0
 副教授      1      0       1      0        1
  讲师       3      0       2      2        1 

我上面的命令执行之后统计出来的数据都是一样的。我该怎么改啊
------最佳解决方案--------------------
select title 职称,COUNT(1) 人数,
sum(case when tutortype='博导' then 1 else 0 end) as 博导,
sum(case when tutortype='硕导' then 1 else 0 end) as 硕导,
sum(case when degree='博士' then 1 else 0 end) as 博士,
sum(case when degree='硕士' then 1 else 0 end) as 硕士
from teaminfo
group by title
------其他解决方案--------------------
跟行列转换差不多啊
可以动态生成sql
楼主看看从这里能不能受到启发

我也是摘自网络

1.--行列转换

原表:?? 姓名???? 科目?? 成绩
?????????? 张三?????语文????80
???????????张三???? 数学??? 90
????????? ?张三???? 物理??? 85
???????? ? 李四?????语文??? 85
?????????? 李四?????物理??? 82
????????? ?李四?????英语??? 90
???????????李四?????政治??? 70
????????? ?王五?????英语??? 90
转换后的表:? 姓名?????? 数学??? 物理???? 英语??? 语文??? 政治?
?????????????????????? 李四?????????0?????????82????????90??????85???????70
???????? ????????????? 王五???????? 0??????????0?????????90?????? 0???????? 0
??????