1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | with t ( code ,dateT , value) as ( select '100' , '20140115' , '100' from dual union all select '200' , '20140114' , '100' from dual union all select '200' , '20140214' , '100' from dual union all select '200' , '20140314' , '100' from dual ) ,code ( rn, code ) as ( select level rn , code from codeT , ( select level from connect by level <= 2 ) ) select * from ( select t.* , row_number () over ( partition by code order by dateT asc ) rn from t ) a , code b where a.rn (+) = b.rn and a.code(+) = b.code |