문제 링크 : https://velog.io/@yooha9621/SQLP실기문제53번
-조회조건이 개통접수과 장애접수에 있으므로 해당 두 테이블을 드라이빙 테이블로 놓고 각각 UNION ALL로 조회하도록 한다.
-조회조건이 개통접수과 장애접수에 있으므로 해당 두 테이블을 드라이빙 테이블로 놓고 각각 UNION ALL로 조회하도록 한다.
[인덱스 생성]
작업지시_X1 : 접수구분코드 + 접수번호
개통접수_X1 : 접수일자 + 접수번호
장애접수_X1 : 접수일자 + 접수번호
SELECT A.작업일련번호 , A.작업자ID , '개통' AS 작업구분, B.고객번호 , B.주소
FROM 작업지시 A , 개통접수 B
WHERE A.작업구분코드 = 'A'
AND B.개통접수일시 >= TRUNC(SYSDATE)
AND B.개통접수일시 < TRUNC(SYSDATE+1)
AND A.접수번호 = B.개통접수번호
UNION ALL
SELECT A.작업일련번호 , A.작업자ID , '장애' AS 작업구분, B.고객번호 , B.주소
FROM 작업지시 A , 장애접수 B
WHERE A.작업구분코드 = 'B'
AND B.장애접수일시 >= TRUNC(SYSDATE)
AND B.장애접수일시 < TRUNC(SYSDATE+1)
AND A.접수번호 = B.장애접수번호
🍎 정리
- 방문 예정일자가 '오늘' 인 작업지시 데이터를 드라이빙 테이블로 놓고 작업구분코드에 따라 개통접수 테이블과 장애접수 테이블 각각 NL조인하여 UNION ALL 처리한다.
- 날짜 비교는 방문예정일자 = TO_CHAR(sysdate , 'YYYYMMDD') 로 했다.
😥 헷갈렸던 부분
- 개통접수일시 는 말그대로 연-월-일-시 까지 나와있는 DATE 형식으로 이를 통해
'오늘'이라는 '일자'까지의 비교를 원하는 경우 다음과 같이 비교한다.
- 개통접수일시 >= trunc(sysdate) and 개통접수일시 < trunc(sysdate+1)