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은 부서 관리자의 급여를 가져옵니다. 그런데 쿼리를 실행하니 오류가 발생합니다. 왜 오류가 났을까요?

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