现有一张学生成绩表:张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 82 结果:姓名 语文 数学 物理 张三 80 90 85 李四 85 92 82 

解决方案 »

  1.   


    SQL> with t as (select '张三' name, '语文' course, 80 grade from dual
      2  union all select '张三' ,'数学', 90 from dual 
      3  union all select '张三' ,'物理', 85 from dual 
      4  union all select '李四' ,'语文', 85 from dual 
      5  union all select '李四' ,'数学', 92 from dual
      6  union all select '李四' ,'物理', 82 from dual)
      7  select t.name "姓名",max(decode(course,'语文',grade)) "语文",max(decode(course,'数学',grade))
    数学",
      8  max(decode(course,'物理',grade)) "物理"
      9  from t
     10  group by t.name;姓名       语文       数学       物理
    ---- ---------- ---------- ----------
    李四         85         92         82
    张三         80         90         85