select a.ClassName,a.CourseName,sum(不及格) as 不及格,sum(差) as 差,sum(中等) as 中等,sum(好) as 好 ,sum(不及格)+sum(差)+sum(中等)+sum(好) as 班级总人数 from (select StudentID,ClassName,CourseName,1 as 不及格,0 as 差,0 as 中等,0 as 好 from StudentScore where ScoreRemark='fail' union all
select StudentID,ClassName,CourseName,0 as 不及格,1 as 差,0 as 中等,0 as 好 from StudentScore where ScoreRemark='low' union all
select StudentID,ClassName,CourseName,0 as 不及格,0 as 差,1 as 中等,0 as 好 from StudentScore where ScoreRemark='medium' union all
select StudentID,ClassName,CourseName,0 as 不及格,0 as 差,0 as 中等,1 as 好 from StudentScore where ScoreRemark='good' )a group by ClassName,CourseName
在这里需要注意的是要给某些字段加别名以示区别!