科目是一定要先确定的
select 姓名,sum(decode(科目,'语文',成绩,0)) 语文,
            sum(decode(科目,'数学',成绩,0)) 数学,
            sum(decode(科目,'英语',成绩,0)) 英语,
            sum(成绩) 合计
from tablename

解决方案 »

  1.   

    sorry科目是一定要先确定的
    select 姓名,sum(decode(科目,'语文',成绩,0)) 语文,
                sum(decode(科目,'数学',成绩,0)) 数学,
                sum(decode(科目,'英语',成绩,0)) 英语,
                sum(成绩) 合计
    from tablename group by 姓名
      

  2.   

    select 姓名,sum(case 科目 when '语文' then 成绩 else 0 end) 语文,
    sum(case 科目 when '数学' then 成绩 else 0 end) 数学,
    sum(case 科目 when '语文' then 成绩 else 0 end) 语文,
    sum(成绩) 合计
    from tablename group by 姓名
      

  3.   

    在什么地方显示数据??
    如果是在SQL*PLUS中,做存储过程来解决。
    如果是在report builder中就好办了,有交叉报表可以解决。