select 科目,sum(decode(姓名, 张一,成绩) 张一,
            sum(decode(姓名,王二,成绩) 王二,
            sum(decode(姓名,李四,成绩) 李四 
from table group by 科目;

解决方案 »

  1.   

    select 科目,sum(decode(姓名, 张一,成绩)) 张一,
                sum(decode(姓名,王二,成绩)) 王二,
                sum(decode(姓名,李四,成绩)) 李四 
    from table group by 科目;
      

  2.   

    select 科目,sum(case 姓名='张一' then 成绩 else 0 end) 张一,
                sum(case 姓名='王二' then 成绩 else 0 end))) 王二,
                sum(case 姓名='李四' then 成绩 else 0 end))) 李四 
    from table group by 科目;
      

  3.   

    to:pumawang(快乐小林) 对不起,你写的sql我看不太懂,所以调试有些困难,sql plus 提示说
    ERROR 位于第1行:
    ORA-00907:缺少右括号
      

  4.   

    to:beckhambobo(beckham)ERROR:位于第2 行:
    ORA-00923: 未找到预期 FROM 关键字
      

  5.   

    那如果人很多怎么办呢?
    而且这样计算效率很低
    我认为你还是直接select
    然后对结果记录集在程序中处理比较合理!
      

  6.   

    用户应该不是太多,所以不用考虑压力问题,用sql实现起来比较简单与规范呀。to:jin0607(dd)
    嗯,所言有理^_^
      

  7.   

    就是case .. then .. else .. end 的用法了。
    多写括号了。 抱歉。 
    改正了,应该可以了吧:
    select 科目,sum(case 姓名='张一' then 成绩 else 0 end) 张一,
                sum(case 姓名='王二' then 成绩 else 0 end) 王二,
                sum(case 姓名='李四' then 成绩 else 0 end) 李四 
    from table group by 科目;
      

  8.   

    select 科目,sum(case when 姓名='张一' then 成绩 else 0 end) 张一,
                sum(case when 姓名='王二' then 成绩 else 0 end) 王二,
                sum(case when 姓名='李四' then 成绩 else 0 end) 李四 
    from table group by 科目;