在SQL Server中進行遞歸查詢可以使用公共表表達式(CTE)來實現。以下是一個示例:
假設有一個Employee表,其結構如下:
CREATE TABLE Employee (
EmployeeID INT PRIMARY KEY,
EmployeeName VARCHAR(50),
ManagerID INT
);
現在我們要查詢某個員工的所有下屬,可以使用以下SQL語句來實現遞歸查詢:
WITH DirectReports AS (
SELECT EmployeeID, EmployeeName, ManagerID
FROM Employee
WHERE ManagerID = @EmployeeID
UNION ALL
SELECT e.EmployeeID, e.EmployeeName, e.ManagerID
FROM Employee e
JOIN DirectReports d ON e.ManagerID = d.EmployeeID
)
SELECT *
FROM DirectReports;
在這個示例中,我們首先定義了一個CTE(DirectReports),它包含了所有直接下屬員工的信息。然后利用UNION ALL和JOIN語句來遞歸查詢所有下屬員工的信息,并最終用SELECT語句輸出結果。
需要注意的是,上述示例中的@EmployeeID是一個參數,表示要查詢下屬員工的員工ID。在實際使用中,可以根據具體情況進行替換。