嵌套起来,先求平均数和总分的部分,然后再相加。
select 学年学期,课程,教师,max(case when 评价人='学生' then 分数 end) 学生分数,max(case when 评价人=' 督导' then 分数 end) 督导分数,max(case when 评价人='领导' then 分数 end) 领导分数,sum(总分相加项) from
(select 学年学期,课程名称, 教师姓名,评价人,avg(分数) 分数,avg(case when 评价人='学生' then 分数*0.5 when 评价人='督导' then 分数*0.2 when 评价人='领导' then 领导*0.3 end) 总分相加项 from table group by 学年学期,课程名称, 教师姓名,评价人) a group by 学年学期,课程,教师
没试验,可能有些地方需要调整(毕竟没测试环境,不好调试),不过大概意思差不多,你先看看子查询能出来什么结果,如果子查询能出来类似 :
学年学期 | 课程名称 | 教师姓名 分数 评价人 总分相加项
2015-2016春 | A | 教师1 93 学生 46.5
2015-2016春 | A | 教师1 95.5 督导 19.1
2015-2016春 | A | 教师1 97 领导 29.1
那就应该没什么问题了