本帖最后由 qinfujun 于 2010-09-02 18:00:01 编辑

解决方案 »

  1.   

        
    with t as(    
        select 1 a, '上'  b, 1 c from dual
        union
        select 2 a, '中'  b, 5 c from dual
        union
        select 3 a, '下'  b, 3 c from dual
        union
        select 2 a, '左'  b, 4 c from dual
    )select max(decode(a,1,b,null)) "1",
           max( decode(a,2,b,null))  "2",
          max(decode(a,3,b,null)) "3"
    from(         
        select row_number() over(partition by a order by c) rm
               ,t.*
        from t 
    )
    group by rm