CTE는 이해하기 쉽고 읽기 쉽고 유지 관리가 쉬운 재귀 쿼리 를 작성하는 메커니즘을 제공 합니다 . CTE 이전에는 재귀 쿼리를 작성하는 유일한 메커니즘은 재귀 함수 또는 저장 프로 시저를 사용하는 것입니다. 그리고 이러한 재귀 함수 또는 저장 프로시 저는 최대 32 개 수준의 재귀 만 지원합니다.
WITH CTE AS ( -- Anchor member definition SELECT 1 AS NN UNION ALL -- Recursive member definition SELECT NN + 1 FROM CTE WHERE NN < 10 ) SELECT * FROM CTE
WITH EmpRecursiveCTE(ManagerId, EmployeeId, Name, Level) AS ( SELECT ManagerId, Id, Name, 0 AS Level FROM dbo.Employees WHERE ManagerId IS NULL UNION ALL SELECT E.ManagerId, E.Id, E.Name, Level + 1 FROM dbo.Employees E INNER JOIN EmpRecursiveCTE EmpCTE ON E.ManagerID = EmpCTE.EmployeeId ) SELECT EmployeeId, Name, ManagerID, Level FROM EmpRecursiveCTE ORDER BY ManagerID OPTION (MAXRECURSION 210)
OPTION (MAXRECURSION 0)