select 班级,学科,教师,上课纪律,学习气氛,作业情况,教室卫生,上课纪律+学习气氛+作业情况+教师卫生 as 总分
union
select ‘’,班级合计,‘’,sum(上课纪律),sum(学习气氛),sum(作业情况),sum(教室卫生),sum(总分)
from
(
select 班级,学科,教师,上课纪律,学习气氛,作业情况,教室卫生,上课纪律+学习气氛+作业情况+教师卫生 as 总分
) as tb
因为你没给四个表的字段是什么,所以我只能给你提供个思路
分数肯定要从评价表中取,假设评价表字段为班级,课程、分数三个字段
班级, 课程、 分数
1 A 12
1 B 43
1 C 21
2 D 26
2 E 11
3 F 64
sql:
select case when grouping(班级)=1 then '总计'
when grouping(课程)=1 then '班级合计'
else name end,
课程,
sum(分数)
from 评价表
group by 班级,课程 with rollup
得到结果
1 A 12
1 B 43
1 C 21
班级合计 NULL 76
2 D 26
2 E 11
班级合计 NULL 37
3 F 64
班级合计 NULL 64
学校合计 NULL 177
所以上面的sql语句可作为派生表再和其它表连取得你想要的结果
--用临时表
--前面进行查询,将数据插入临时表
update #tablename set 总分=上课纪律+学习气氛+作业情况+教师卫生
select * from #tablename
drop table #tablename