表结构如下:
   字段1    字段2    字段3
---------------------------------
    A        AA       AAA
    B        BB       BBB
    C        CC       CCC
    D        DD       DDD
    E        EE       EEE想通过查询语句输出为以下格式:   字段1    字段2    字段3     字段1     字段2     字段3
----------------------------------------------------------
    A         AA      AAA       D         DD        DDD
    B         BB      BBB       E         EE        EEE
    C         CC      CCC就是将一张表的后半部分数据 折到新字段中显示,请各位高手帮忙解决,谢谢。   

解决方案 »

  1.   

    create table t1 (f1 varchar2(20),f2 varchar2(20),f3 varchar2(20));
    insert into t1 select 'A','AA','AAA' from dual;
    insert into t1 select 'B','BB','BBB' from dual;
    insert into t1 select 'C','CC','CCC' from dual;
    insert into t1 select 'D','DD','DDD' from dual;
    insert into t1 select 'E','EE','EEE' from dual;
    commit;select b1.f1, b1.f2, b1.f2,
           b2.f1, b2.f2, b2.f2
    from
    (
                --求表的前半部分数据
                SELECT aa.*
                FROM (SELECT   rownum rn, a.* FROM t1 a ORDER BY f1) aa where aa.rn<=round((select count(*) from t1)/2,0)
                     
    )b1 
     left join 
    (
                --求表的后半部分数据
                SELECT aa.*, rownum rn2
                FROM (SELECT   rownum rn, a.* FROM t1 a ORDER BY f1) aa where aa.rn>round((select count(*) from t1)/2,0)                 
    )b2
    on b1.rn=b2.rn2;--------执行结果如下---------------------------------------------
    A AA AAA D DD DDD
    B BB BBB E EE EEE
    C CC CCC
      

  2.   

    select tb1.字段1 ,tb1.字段2 ,tb1.字段3 ,tb2.字段1 ,tb2.字段2 ,tb2.字段3 
    from   (
    select table.*,rownum rn
    from table
    where rownum< ceil((select max(rownum) from tb)/2)
    ) tb1
    join   (
    select table.*,rn
    from (select table.*,rownum rn from table order by 字段1)
    where rn>= ceil((select max(rownum) from table )/2)
    ) tb2
    on tb1.rn = tb2.rn -ceil((select max(rownum) from table )/2);