原始数据格式:
学校  班级  学号
A     1      01
A     1      02
A     1      03
A     2      01
A     2      02
A     2      03
B     1      01
B     1      02
B     1      03
B     2      01
B     2      02
......
(不超过50行数据)
========================================================================
目标数据格式:
     
学校:A                          B                       ...... 
班级:1           2              1            2          ......
学号:01  02  03  01   02   03   01  02   03  01   02    ......    (一共50列,无值时赋空)
列号  1    2   3   4    5    6   7   8   9   10    11    ...... 50 

解决方案 »

  1.   


    select from T1.xx1,T2.bj2,T.学号 from 原始表 T,(select distinct 学校 xx1 from 原始表) T1,select distinct 学校 xx2,班级 bj2 from 原始表) T2 where T.学校=T1.xx1(+) AND
     T.学校=T2.xx2(+) AND T.班级=T2.bj2(+);没有经过验证,应该类似这样的
      

  2.   


    select T1.xx1,T2.bj2,T.学号 from 原始表 T,(select distinct 学校 xx1 from 原始表) T1,select distinct 学校 xx2,班级 bj2 from 原始表) T2 where T.学校=T1.xx1(+) AND
     T.学校=T2.xx2(+) AND T.班级=T2.bj2(+);多了一个from
      

  3.   

    行转列的需求?
    看一下decode的语法
      

  4.   

    多年以后,又见行列转置。
    用存储过程解决吧,何必为难SQL文呢?
    顺便问一句,是不是那个老师来为难你的?
      

  5.   

    原始表:
    TYPE                 ORDERS               WENTI
    -------------------- -------------------- --------------------
    A                    1                    1
    A                    1                    2
    A                    1                    3
    A                    2                    1
    A                    2                    2
    A                    2                    3
    B                    1                    1
    B                    1                    2
    B                    1                    3
    =====================================================================================
    结果表:
    A B
    1 2 1 2
    01 02 03 01 02 03 01 02 03 01 02
      

  6.   

    sql 也能写 不过太刺激了
    先弄出一张表 这样反复插入大概50行
    A      B      C
    ------ ------ ------
    A      1      01
    A      1      02
    A      1      03
    A      1      04
    A      1      05
    A      2      05
    A      2      03
    A      2      06
    A      2      07
    A      3      07
    B      1      01
    B      1      02
    B      1      03
    B      1      04
    B      1      05
    B      2      05
    B      2      03
    B      2      06
    B      2      07
    B      3      07
    C      1      01
    C      1      02
    C      1      03
    C      1      04
    C      1      05
    C      2      05
    C      2      03
    C      2      06
    C      2      07
    C      3      07
    D      1      01
    D      1      02
    D      1      03
    D      1      04
    D      1      05
    D      2      05
    D      2      03
    D      2      06
    D      2      07
    D      3      07
    E      1      01
    E      1      02
    E      1      03
    E      1      04
    E      1      05
    E      2      05
    E      2      03
    E      2      06
    SQL写法:
     1  select     max(decode(ro,1,A,null)) as "1" from  (select rownum ro,A,B,C from lpy order by A,B,C) a
      2  union all
      3  select     max(decode(ro,1,B,null)) as "1"  from (select rownum ro,A,B,C from lpy order by A,B,C) a
      4  union all
      5* select     max(decode(ro,1,C,null)) as "1"  from (select rownum ro,A,B,C from lpy order by A,B,C) a基本实现不了 但是格式你看是不是你要的?
    PLSQL写法
    declare
    type rr is table of varchar2(2)
            index by binary_integer;
            aa rr;
            bb rr;
            cc rr;
            dd rr;
            nu number;
            aaa long;
            bbb long;
            ccc long;
            ddd long;
    begin
    --      nu:=10;
            bbb:='School:';
            ccc:='Class:';
            ddd:='Number:';
    select count(*) into nu from lpy;
    nu:=20;
    for i in 1..nu loop
    select * into aa(i),bb(i),cc(i),dd(i) from (select rownum ro,A,B,C from lpy order by A,B,C) a where ro=i;
            aaa:=aaa||chr(9)||aa(i);
            bbb:=bbb||chr(9)||bb(i);
            ccc:=ccc||chr(9)||cc(i);
            ddd:=ddd||chr(9)||dd(i);
    end loop;dbms_output.put_line(aaa);
    dbms_output.put_line(bbb);
    dbms_output.put_line(ccc);
    dbms_output.put_line(ddd);
    end;
    /
                  1       2       3       4       5       6       7       8       9       10      11      12      13      14    15       16      17      18      19      20
    School:  A       A       A       A       A       A       A       A       A       A       B       B       B       B     BB       B       B       B       B
    Class:   1       1       1       1       1       2       2       2       2       3       1       1       1       1     12       2       2       2       3
    Number:    01      02      03      04      05      05      03      06      07      07      01      02      03      04    05       05      03      06      07      07这个效果有点丑  但是 LZ你看看是要这种效果么?