학교 테이블 |
|
ID |
IN TIME |
OUT TIME |
A |
100 |
200 |
B |
200 |
300 |
C |
300 |
400 |
직장 테이블 |
|
LOC |
IN TIME |
OUT TIME |
A1 |
110 |
130 |
B1 |
130 |
140 |
C1 |
150 |
190 |
D1 |
290 |
310 |
E1 |
310 |
500 |
결과 |
|
ID |
LOC |
결과 이유 |
A |
A1 |
학교 테이블 시간 범위에 직장 테이블의 시간이 포함 되있으므로 |
A |
B1 |
학교 테이블 시간 범위에 직장 테이블의 시간이 포함 되있으므로 |
A |
C1 |
학교 테이블 시간 범위에 직장 테이블의 시간이 포함 되있으므로 |
B |
D1 |
직장 테이블의 INTIME이 학교 테이블에 포함 됨. |
C |
E1 |
직장 테이블의 INTIME이 학교 테이블에 포함 됨. |
결론은 직장의 IN TIME을 학교에 TIME에 포함된 값을 가져오면 됩니다.
with a as
(
select 'A' as ID, '100' AS INTIME, '200' as OUTTIME from dual
union all
select 'B' as ID, '200' AS INTIME, '300' as OUTTIME from dual
union all
select 'C' as ID, '300' AS INTIME, '400' as OUTTIME from dual
),
b as
(
select 'A1' as ID, '110' AS INTIME, '130' as OUTTIME from dual
union all
select 'B1' as ID, '130' AS INTIME, '140' as OUTTIME from dual
union all
select 'C1' as ID, '150' AS INTIME, '190' as OUTTIME from dual
union all
select 'D1' as ID, '290' AS INTIME, '310' as OUTTIME from dual
union all
select 'E1' as ID, '310' AS INTIME, '500' as OUTTIME from dual
)
SELECT * FROM A,B;
위와 같은 결과가 나와야 하는데 어떠한 함수를 써야하는지 방법이 어떻게 되는지
도움 요청 드립니다.