问题描述
表 students 中有如下数据:姓名 科目 成绩张三 语文 20张三 数学 30张三 英语 40李四 语文 50李四 数学 60李四 英语 70 如何得到结果:姓名 语文 数学 英语张三 20 30 40李四 50 60 70
解决方案
select '姓名' t.name,'语文' (select score from student s where s.name=t.name and s.sub='chinese')from student t group by t.name数学 英语照着写
解决方案二:
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 studentGROUP BY 姓名;
时间: 2024-11-16 16:41:04