表如下:   序号  姓名    科目      分数    01 张三 a 100
    01 张三 b 98
    01 张三 c 97
    02 李四 a 98
    02 李四 b 99
    02 李四 c 100
    03 王五 a 99
    03 王五 b 100求一条sql语句,查询结果如下01 张三 100 98  97
02 李四 98  99  100
03 王五 99  100也就是序号,姓名合并,分数按照 a b c 的顺序列出来,没有的为空,谢谢!

解决方案 »

  1.   

    固定列:
    select 序号,姓名,
    max(decode(科目,'a',分数,0)) as 'a',
    max(decode(科目,'b',分数,0)) as 'b',
    max(decode(科目,'c',分数,0)) as 'c'
    from tab
    group by 序号,姓名不固定列的情况下,要写存储过程进行转换
      

  2.   

    select 序号,姓名,decode(科目,'a',分数,'') as a, decode(科目,'b',分数,'') as b,decode(科目,'c',分数,'') as c from table group by 序号,姓名;
      

  3.   

    看这个
    http://topic.csdn.net/u/20101209/18/ddb54d8c-bf4a-46fe-bd21-12571bc4fd19.html