Microsoft SQL Server에서 계층적 데이터를 쿼리하기 위해 "Connect by"와 유사한 방법은 CTE(Common Table Expression)와 재귀 쿼리(Recursive Query)를 사용하는 것입니다. CTE 및 재귀 쿼리를 사용하면 계층적 데이터를 다루는데 효과적입니다. 아래에 간단한 예제를 제시하겠습니다.
먼저, 다음과 같은 예제 데이터를 사용하겠습니다.
CREATE TABLE Employees
(
EmployeeID INT PRIMARY KEY,
EmployeeName NVARCHAR(50),
ManagerID INT
);
INSERT INTO Employees (EmployeeID, EmployeeName, ManagerID)
VALUES (1, 'John', NULL),
(2, 'Alice', 1),
(3, 'Bob', 1),
(4, 'Charlie', 2),
(5, 'David', 2),
(6, 'Eve', 3);
이제 CTE와 재귀 쿼리를 사용하여 계층적 데이터를 쿼리하는 방법을 보여드리겠습니다.
-- 재귀 CTE를 사용하여 계층적 데이터를 쿼리합니다.
WITH EmployeeHierarchy AS
(
SELECT EmployeeID, EmployeeName, ManagerID, 0 AS Level