表 students 中有如下数据:
姓名 科目 成绩
张三 语文 20
张三 数学 30
张三 英语 40
李四 语文 50
李四 数学 60
李四 英语 70
如何得到结果:
姓名 语文 数学 英语
张三 20 30 40
李四 50 60 70
[code="sql"]select '姓名' t.name,
'语文' (select score from student s where s.name=t.name and s.sub='chinese')
from student t group by t.name[/code]
数学 英语照着写
SELECT 姓名,
sum(case 科目 when '语文' then 分数 else 0 end) 语文,
sum(case 科目 when '数学' then 分数 else 0 end) 数学,
sum(case 科目 when '英语' then 分数 else 0 end) 英语,
convert(avg(分数 * 1.0),DECIMAL(18,2)) 平均分,
sum(分数) 总分
from student
GROUP BY 姓名;