더북(TheBook)

11.1.2 CTE로 또 다른 서브쿼리 참조하기

CTE를 사용하면 서브쿼리 안에서 또 다른 서브쿼리를 참조할 수 있습니다. 다음 쿼리를 살펴봅시다.

코드 11-2

SELECT a.dept_no, a.dept_name, sal.emp_no, sal.salary
  FROM departments a,
       (SELECT emp_no, dept_no
          FROM dept_manager
         WHERE SYSDATE() BETWEEN from_date AND to_date
       ) dept_mgr,
       (SELECT a.emp_no, a.salary, b.dept_no
          FROM salaries a, dept_mgr b
         WHERE SYSDATE() BETWEEN a.from_date AND a.to_date
           AND a.emp_no = b.emp_no
       ) sal
 WHERE a.dept_no = sal.dept_no;

실행결과

2개의 파생 테이블을 사용한 쿼리입니다. 이 쿼리는 부서 번호와 부서명, 현 시점 기준 부서 관리자의 사번과 급여를 조회합니다. 첫 번째 서브쿼리인 dept_mgr은 부서 관리자의 정보를 가져오고 두 번째 서브쿼리인 sal은 부서 관리자의 급여를 가져옵니다. 그런데 쿼리를 실행하니 오류가 발생합니다. 왜 오류가 났을까요?

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.