姓名 课程   成绩
张三 计算机 80
张三 语文 180
李四 英语 80
张三 数学 180要显示为 
姓名  计算机 语文 英语 数学
张三  80     180
李四              80   180这个课程 可能有100种 
怎么实现

解决方案 »

  1.   

    http://topic.csdn.net/u/20100109/13/6a10c168-f190-4766-b838-adbf03c4ac7b.html
      

  2.   

    select uname,max(decode(upwd,'计算机',status)) as jsj,max(decode(upwd,'语文',status)) as yw,
    max(decode(upwd,'英语',status)) as yy,max(decode(upwd,'数学',status)) as sx 
    from tbl_user t group by uname;
      

  3.   

    我的怎么报错,提示:未找到 from 关键字
      

  4.   

    http://topic.csdn.net/u/20100109/13/6a10c168-f190-4766-b838-adbf03c4ac7b.html?13274
      

  5.   


    SQL> with t as(
      2       select '张三' name,'计算机' course,80 score from dual union all
      3       select '张三','语文',180 from dual union all
      4       select '李四','英语',80 from dual union all
      5       select '张三','数学',180 from dual)
      6  select name,
      7         max(decode(course,'计算机',score)) 计算机,
      8         max(decode(course,'语文',score)) 语文,
      9         max(decode(course,'英语',score)) 英语,
     10         max(decode(course,'数学',score)) 数学
     11  from t
     12  group by name
     13  /
    /*
    NAME     计算机       语文       英语       数学
    ---- ---------- ---------- ---------- ----------
    李四                               80 
    张三         80        180                   180
    */
      

  6.   

    我是这么处理的
    写一个存储过程 先将课程总数查询出来 然后利用游标拼接sql
     最终sql和他们拼出的是一样的 就是select max()as 1,max()as 2这样的样子
    然后建一个视图 create view as 拼出来的sql
    存储过程执行完,就可以select * from view来查询了
    这样虽然也不完美 但是总算是可以把结果查出来了