WITH 절은 CTE를 표현하기 위한 구문
CTE : Common Table Expression (공통 테이블 식)
CTE는 기존 뷰, 파생 테이블, 임시 테이블 등을 대신할 수 있으며 더 간결한 표현이 가능
CTE는 비재귀적, 재귀적 2가지가 있음
비재귀적 CTE
단순한 형태이며 쿼리분을 단순화 시키는 데에 적합
WITH CTE 테이블 이름 (열 이름)
AS
(
쿼리문
)
SELECT 열 이름 FROM CTE 테이블 이름;
WITH 절로 조회한 결과로 가상의 테이블을 만들어 select를 실행한다.
WITH
AAA (열 이름)
AS (쿼리문),
BBB (열 이름)
AS (쿼리문),
CCC (열 이름)
AS (쿼리문)
SELECT 열 이름 FROM CTE 테이블 이름;
위 형식처럼 중복 CTE도 가능하지만 BBB, CCC는 AAA의 참조가 가능하고 AAA는 아직 정의되지 않은 BBB, CCC를 참조할 수 없음
재귀적 CTE
재귀적 : 자신을 반복적으로 호출
WITH CTE 테이블 이름 (열 이름)
AS
(
<쿼리문1 : SELECT * FROM 테이블1>
UNION ALL
<쿼리문2 : SELECT * FROM 테이블1 JOIN CTE 테이블 이름>
)
SELECT 열 이름 FROM CTE 테이블 이름;
먼저 쿼리문1이 작동하고 다음에 쿼리문2가 작동하며 쿼리문2의 결과가 없을때까지 계속 재귀적으로 호출
'MSSQL' 카테고리의 다른 글
저장 프로시저 (0) | 2016.03.10 |
---|---|
인덱스 (0) | 2016.03.10 |
사용자정의 데이터 형식 (0) | 2016.02.23 |
[SQL 2008 R2] SQL Server 구성 관리자에서 원격 프로시저를 호출하지 못했습니다. (0) | 2016.02.22 |
SSMS 서버 연결 실패시 확인사항 (0) | 2016.02.19 |