안녕하세요
아래와 같은 두개의 테이블을 번호로 조인하여 발생일에 해당하는 유효기간에 있는 값을 찾으려 합니다.
쿼리를 어떻게 짜야 할지 도움 부탁드립니다.
table a
아이디 | 발생일 | 번호 |
a | 20160320 | 11 |
b | 20160501 | 12 |
c | 20160105 | 13 |
table b
번호 | 유효시작일 | 유효종료일 | 값 |
11 | 20160101 | 20160220 | 홍길동 |
11 | 20160221 | 20160325 | 아무개 |
11 | 20160325 | 99999999 | 김씨 |
12 | 20160101 | 20160430 | 이씨 |
12 | 20160501 | 99999999 | 박씨 |
13 | 20160101 | 20160320 | 노씨 |
결과
아이디 | 발생일 | 번호 | 값 |
a | 20160320 | 11 | 아무개 |
b | 20160501 | 12 | 박씨 |
c | 20160105 | 13 | 노씨 |
with t1 as ( select 'a' id, '20160320' dt, '11' no from dual union all select 'b' id, '20160501' dt, '12' no from dual union all select 'c' id, '20160105' dt, '13' no from dual ) , t2 as ( select '11' no, '20160101' fdt, '20160220' tdt, '홍길동' nm from dual union all select '11' no, '20160221' fdt, '20160325' tdt, '아무개' nm from dual union all select '11' no, '20160325' fdt, '99999999' tdt, '김씨' nm from dual union all select '12' no, '20160101' fdt, '20160430' tdt, '이씨' nm from dual union all select '12' no, '20160501' fdt, '99999999' tdt, '박씨' nm from dual union all select '13' no, '20160101' fdt, '20160320' tdt, '노씨' nm from dual ) select a.id, a.dt, a.no, b.nm from t1 a, t2 b where a.no = b.no and a.dt between b.fdt and b.tdt