with t(a, b, c) as
(select 11, '20120201', 'T' from dual union all
select 11, '20120202', 'C' from dual union all
select 11, '20140405', 'R' from dual union all
select 11, '20140905', 'P' from dual union all
select 22, '20130601', 'T' from dual union all
select 22, '20130408', 'C' from dual union all
select 22, '20140609', 'R' from dual
)
select t1.*
from t t1
, t t2
where 1=1
and t1.a = t2.a
and t1.b > t2.b
and t1.c != 'T'
and t2.c = 'T'
;
select a, b, c
from (
select t.*, level as lv
from t
where c != 'T'
start with c = 'T'
connect by nocycle prior a = a
and prior b < b
)
where lv = 2
;
1. T 는 a 하나당 1건 뿐인가요?
- 혹시 여러건이 존재할 가능성은 없는지?
- 있다면? 결과가 어떻게 나와야 하는지?
2. "이후"의 의미를 어떻게 해석해야 할까요?
- 결과에 T 가 포함되나요?
- 결과에 T 가 제외되나요?
SELECT *
FROM (SELECT a, b, c
, MIN(DECODE(c, 'T', b)) OVER(PARTITION BY a) d
FROM t
)
WHERE b >= d
;
안녕하세 마농님..
T는 A당 하나입니다.
그리고 T포함입니다.