오류가 난 코드 9-15의 서브쿼리 바로 앞에 LATERAL 키워드를 추가했습니다. 이렇게 하니 서브쿼리의 WHERE 절에서 메인쿼리의 FROM 절에 있는 테이블의 칼럼을 참조합니다. LATERAL 덕분에 조인 조건을 서브쿼리 안에서도 사용할 수 있게 됐습니다.
코드 9-16은 다음과 같이 INNER JOIN 구문으로 바꿔 쓸 수도 있습니다.
코드 9-17
SELECT a.dept_no, a.dept_name,
mng.emp_no, mng.first_name, mng.last_name
FROM departments a
INNER JOIN LATERAL
(SELECT b.dept_no, b.emp_no, c.first_name, c.last_name
FROM dept_manager b, employees c
WHERE b.emp_no = c.emp_no
AND SYSDATE() BETWEEN b.from_date AND b.to_date
AND a.dept_no = b.dept_no
) mng
ORDER BY 1;
실행결과