数据库:
姓名 课程 成绩
小明 语文 98
小明 数学 87
小明 地理 88
小明 历史 76
小军 语文 75
小军 数学 67
小军 地理 88
小军 历史 59
小红 语文 98
小红 数学 66
小红 地理 88
小红 历史 77
查询结果:
姓名 语文 数学 地理 历史
小明 98 87 88 76
小军 75 67 88 59
小红 98 66 88 77
1
Yannis1990 2015-03-16 20:36:32 +08:00 1
|
2
angelo_peng 2015-03-16 20:49:07 +08:00 1
|
3
doushini 2015-03-16 23:07:15 +08:00 via Android
行转列的问题
|
4
Sight4 2015-03-17 12:53:01 +08:00 1
可以使用SUM-IF来解决,例如:
SELECT `姓名`, SUM(IF(`课程`='语文', score, 0)) AS `语文`, SUM(IF(`课程`='数学', score, 0)) AS `数学`, SUM(IF(`课程`='地理', score, 0)) AS `地理`, SUM(IF(`课程`='历史', score, 0)) AS `历史` FROM 表名 GROUP BY `姓名` 重点是首先,课程的名字不能错,否则会统计不到,另外就是,如果同一张表中存在重复记录,会累加统计,所以,一般会加上其他限定条件,比如 考试时间,或者批次等等来区分 |