如果您使用的是SQL Server 2005或更新的版本,或者任何其他支持遞歸CTE(公用表表達式)的數據庫,則可以編寫一個遞歸CTE,如果您需要給定員工下的所有級別的下級(而不僅僅是直接下一級向下下屬):
DECLARE @StartEmpID INT = 1
;WITH EmployeeHierarchy AS
(
SELECT
e.EmpID, e.EmpName, e.EmpType, 0 AS 'Level', NULL AS 'Supervisor ID'
FROM dbo.Employee e
WHERE e.EmpID = @StartEmpID
UNION ALL
SELECT
e.EmpID, e.EmpName, e.EmpType, Level + 1 AS 'Level', map.emp_id
FROM dbo.Employee e
INNER JOIN dbo.EmpMap map ON e.EmpID = map.empmap_id
INNER JOIN EmployeeHierarchy eh ON map.emp_id = eh.EmpID
)
SELECT *
FROM EmployeeHierarchy
這將產生所有員工由@StartEmpID
定義的一個向下的遞歸上市 - 在幾個層次。
在你的情況,你會得到一個輸出是這樣的:
EmpID EmpName EmpType Level Supervisor ID
1 Shwetha 1 0 NULL
4 Sita 2 1 1
6 Guna 2 1 1
5 Rani 3 2 4
你的意思是「5是在4」? – gbn