select name,
sum(decode(courses,'X1',result)) X1,
sum(decode(courses,'X2',result)) X2,
sum(decode(courses,'X3',result)) X3,
sum(decode(courses,'X4',result)) X4
from TableName
group by name;

解决方案 »

  1.   

    select a.name,b.grade X1,c.grade X2,d.grade X3,,e.grade X4
    from tab_name a,tab_name b,tab_name c,tab_name d,tab_name e
    where a.name = b.name and a.subject = b.subject and
          a.name = c.name and a.subject = c.subject and
          a.name = d.name and a.subject = d.subject and
          a.name = e.name and a.subject = e.subject;  还是竹子的方法好
      

  2.   

    好象类似的问题无法在一条语句中执行,请您考虑一下前台的开发工具(有关report的
      

  3.   

    SELECT NAME ,SUM(X1) X1,SUM(X2) X2,SUM(X3) X3,SUM(X4) X4 FROM (
    SELECT NAME ,SCORE X1,0 X2,0 X3,0 X4 FROM MYTABLE WHERE COURCE='X1'
    UNION ALL
    SELECT NAME ,0 X1,SCORE X2,0 X3,0 X4 FROM MYTABLE WHERE COURCE='X2'
    UNION ALL
    SELECT NAME ,0 X1,0 X2,SCORE X3,0 X4 FROM MYTABLE WHERE COURCE='X3'
    UNION ALL
    SELECT NAME ,0 X1,0 X2,0 X3,SCORE X4 FROM MYTABLE WHERE COURCE='X4'
    ) GROUP  BY NAME;
      

  4.   


      谢谢各位!
      我用while,可以程序控制,但速度很慢!!!
      表结构如此(这只是一个简单例子),主要是为了系统改变和维护!
      

  5.   

    可以利用如下的SQL语句实现
    SELECT * FROM tablename 
    ORDER BY 姓名,课程
    然后在结果集里顺序取出数据,用程序控制填写即可.
    while not rs.EOF
      placeData
      rs.MoveNext
    wend