select max(decode(r2,1,a,null)),max(decode(r2,1,b,null)),
       max(decode(r2,0,a,null)),max(decode(r2,0,b,null))
from (
select round(rownum/2) r1,mod(rownum,2) r2, a,b from t1 
)
group by r1

解决方案 »

  1.   

    select max(decode(r2,1,a,null)),max(decode(r2,1,b,null)),
           max(decode(r2,0,a,null)),max(decode(r2,0,b,null))
    from (
    select ceil(rownum/2) r1,mod(rownum,2) r2, a,b from t1 
    )
    group by r1把round 改为 ceil 更通用一些。
      

  2.   

    select decode(r2,1,a,null),decode(r2,1,b,null),
           decode(r2,0,a,null),decode(r2,0,b,null)
    from (
    select mod(rownum,2) r2, a,b from t1 
    )
    我认为这样就可以了,
      

  3.   

    select decode(ab.r2,1,ab.a,null) aa,decode(ab.r2,1,ab.b,null) bb,
           decode(ab.r2,0,ab.a,null),decode(ab.r2,0,ab.b,null)
    from (
    select mod(rownum,2) r2, a,b from t1 
    ) ab
    order by aa,bb