原来是 
比如 原来是
 学号    课程编号  分数      
 '9801’  101     80
 '9801'  102     90
 '9801'  103     87
 '9801'  104     65
 '9801'  105     77
 '9802'  101     77
 '9802'  102     77
 '9802'  103     77
 '9802'  104     77
  ................
  ......
  ....
另一张表 是 课程编号 课程名称
              101      语文
              102      数学
              ...      ...
 还有一张表是 编号    姓名
              9801    旺财
              ...     ...
要转换成
姓名  语文  数学 英语 ....
旺财  80   90    97
.....
动态转换啊
高分啊!!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xumin51333】截止到2008-07-18 23:29:58的历史汇总数据(不包括此帖):
    发帖的总数量:2                        发帖的总分数:110                      每贴平均分数:55                       
    回帖的总数量:1                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:2                        结贴的总分数:110                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    郁闷。。你太有才了
    Declare 
      vStr varchar2(2000);
      cursor myCur is select * from curTab;
      vno number(4);
      vna varchar2(30);
    Begin
      vStr := 'Create or replace view scrTab as  select 姓名';
      dbms_output.put_line(vStr);
      for varA in myCur
      loop
        vStr := vStr||','||varA.curName;
        dbms_output.put_line(','||varA.curName);
      end loop;
      vStr := vStr||'  from stuTab,( select stuNo';
      dbms_output.put_line('  from stuTab,( select stuNo');
      for vCur in myCur
      loop
        vStr := vStr ||', sum(decode(curno,'||vCur.curno||',score)) as '||vCur.curName;
        dbms_output.put_line(', sum(decode(curno,'||vCur.curno||',score)) as '||vCur.curName);
      end loop;
      vStr := vStr||'   from resTab   group by stuNo) tabC   where stuTab.学号 = tabC.stuNo';
      dbms_output.put_line('   from resTab   group by stuNo) tabC   where stuTab.学号 = tabC.stuNo');
      execute immediate vStr;
    End;
    /
      

  3.   

    例如表A,B,C,为lz的三个表,三表关联,得到一个张纵表,然后再把纵表横向现实sql语句类似如下:select t.姓名,wmsys.wm_concat(t.分数) as 分数 from (         select c.姓名,b.课程名称,a.分数 from A a,B b,C c where A.学号=C.学号 and A.课程编号=B.课程编号) t group by t.姓名 order by t.分数分数的别名顺序你可以按照 order by 的顺序写出来就好了,我现在没有数据库进行测试wmsys.wm_concat是oracle 10g 的函数,10g以下版本不支持。
      

  4.   

    主要的难点在:纵表的横向显示,而oracle 10g 正好提供的这个函数 wmsys.wm_concat
      

  5.   

    http://lengyue.javaeye.com/blog/195441