用decode
select eid   ,  classid  ,    studentid    ,    examid  ,
max(decode(course,'english',score,NULL)),      
max(decode(course,'chinese',score,NULL)),
max(decode(course,'math',score,NULL)),
....
from table
group by eid   ,  classid  ,    studentid    ,    examid

解决方案 »

  1.   

    楼上的好像不能凑成同一个eid出一条记录吧
      

  2.   

    请问 liuyi8903(风继续吹)
    你有这方面的实例吗?因为如果例数过多,用SQL语句效果应该会好些
      

  3.   

    利用decode进行行列转换,你试试看,没问题的
    select eid,classid,studentid,examid,
    max(decode(course,'english',score,NULL)),      
    max(decode(course,'chinese',score,NULL)),
    max(decode(course,'math',score,NULL))
    from table
    group by eid
      

  4.   

    主要是courseid不是固定的,
    就没办法了
    写程序或者存储过程吧
      

  5.   

    用decode是个好办法
    select studentsid,studentsname,classid,
    max(decode(course,'english',score,NULL)) as english, 
    max(decode(course,'chinese',score,NULL)) as chinese,  
    max(decode(course,'math',score,NULL)) as math
    from students group by studentsid,studentsname,classid