假设表名: student(name char(10),sub char(10),point int)
   其中SUB 可以为'语','数','外'.
首先,可以设一个单位矩阵表
 trans(sub char(10),s1 int ,s2 int ,s3 int )
其内容为  '语',1,0,0
          '数',0,1,0
         '外',0,0,1则可以
select student.name,
       sum(trans.s1*student.point),
       sum(trans.s2*student.point),
       sum(trans.s3 * student.point)
from student ,trans
where student.sub = trans.sub
group by student.name