Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Consulta de correspondência de seleção do Oracle SQL


Você pode tentar esta abordagem:
-- sample of data from the question
SQL> with t1(uid1, rid, time_type, date_time) as
  2  (
  3    select 'a11',  1, 1, '5/4/2013 00:32:00' from dual union all
  4    select 'a43',  2, 1, '5/4/2013 00:32:01' from dual union all
  5    select 'a68',  2, 2, '5/4/2013 00:32:02'  from dual union all
  6    select 'a98',  2, 1, '5/4/2013 00:32:03'  from dual union all
  7    select 'a45',  2, 1, '5/4/2013 00:32:04'  from dual union all
  8    select 'a94',  1, 2, '5/4/2013 00:32:05'  from dual union all
  9    select 'a35',  2, 2, '5/4/2013 00:32:07'  from dual union all
 10    select 'a33',  2, 2, '5/4/2013 00:32:08'  from dual
 11  ) -- the query
 12  select uid1
 13       , rid
 14       , time_type
 15       , date_time
 16    from (select uid1
 17               , rid
 18               , time_type
 19               , date_time
 20               , row_number() over(partition by rid, time_type order by rid) as rn
 21            from t1
 22          )
 23  order by rid, rn, time_type
 24  /

Resultado:
UID1        RID  TIME_TYPE DATE_TIME
---- ---------- ---------- -----------------
a11           1          1 5/4/2013 00:32:00
a94           1          2 5/4/2013 00:32:05
a43           2          1 5/4/2013 00:32:01
a68           2          2 5/4/2013 00:32:02
a98           2          1 5/4/2013 00:32:03
a35           2          2 5/4/2013 00:32:07
a45           2          1 5/4/2013 00:32:04
a33           2          2 5/4/2013 00:32:08

8 rows selected

Demonstração do SQLFiddle