姓名  科目  分数
小明  语文  98
小明  数学  80
小明  英语  79
小红  语文  86
小红  数学  84
小红  英语  90查出结果要求为
姓名  语文  数学  英语
小明  98    80   79
小红  86    84   90这要怎么写啊

解决方案 »

  1.   

    select name,sum(decode(科目,'语文',分数,0)) "语文",
    sum(decode(科目,'数学',分数,0)) "数学",
    sum(decode(科目,'英语',分数,0)) "英语"
    from t
    group by name;
      

  2.   

    SELECT 姓名,sum(case when 科目='语文' then 分数 else 0 end) 语文,
    ,sum(case when 科目='数学' then 分数 else 0 end) 数学
    ,sum(case when 科目='英语' then 分数 else 0 end) 英语
    from tb
    group by 姓名 ;
      

  3.   


    create table tt(姓名 varchar2(100),科目 varchar2(100),分数 number);
    insert into tt values('小明','语文',98);
    insert into tt values('小明','数学',80);
    insert into tt values('小明','英语',79);
    insert into tt values('小红','语文',86);
    insert into tt values('小红','数学',84);
    insert into tt values('小红','英语',90);
    commit;select 姓名,
           sum(decode(科目, '语文', 分数, 0)) "语文",
           sum(decode(科目, '数学', 分数, 0)) "数学",
           sum(decode(科目, '数学', 分数, 0)) "数学"
      from tt
     group by 姓名;