首页 新闻 会员 周边 捐助

统计考生多次的老师列表

0
悬赏园豆:10 [已解决问题] 解决于 2014-05-19 10:02

数据如下:

StuID MarkType TesterID
201301001 A 001
201301001 B 002
201301002 A 001
201301001 C 001
201301002 C 001

需要统计考生打分类型的打分员:

结果表如下:

StuID A B C
201301001 001 002 001
201301002 001   001

分类统计Sql怎么写啊?(不需要用表多次连接查询的方式,希望能提供分类统计的实现脚本) 

Seven_boy的主页 Seven_boy | 初学一级 | 园豆:50
提问于:2013-12-02 16:19
< >
分享
最佳答案
0

select * from 表名 pivot (max(TesterID) for MarkType in (A ,B,C))  a 

收获园豆:3
t101lian | 初学一级 |园豆:32 | 2013-12-18 14:46
其他回答(5)
1

行转列完全可以实现你的功能,脚本嘛LZ百度参考下例子然后自己动手写。你可以的!

收获园豆:1
Zery | 园豆:6151 (大侠五级) | 2013-12-02 16:26
0

反转列可以实现你的需求,如果楼主用的2005或以上的版本,可以直接使用pivot这个聚合函数实现反转,传送门

收获园豆:3
netqiang | 园豆:405 (菜鸟二级) | 2013-12-02 17:39
0

用case when 语句, 再配合max(),和group by 可以实现

收获园豆:1
Albert Fei | 园豆:2102 (老鸟四级) | 2013-12-03 10:04
0

select  stuID,

sum(case MarkType when 'A' then TesterID else '' end) as A,

sum(case MarkType when 'B' then TesterID else '' end) as B,

sum(case MarkType when 'C' then TesterID else '' end) as C

from 表名 group by stuID

收获园豆:1
sam.c | 园豆:148 (初学一级) | 2013-12-03 10:49

这个简单。

支持(0) 反对(0) 天堂的鸽子 | 园豆:138 (初学一级) | 2013-12-22 00:58
0

行列转换,还是自己百度一下吧。

收获园豆:1
bitbug | 园豆:470 (菜鸟二级) | 2013-12-03 14:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册