跟踪表中的层次结构

时间:2010-07-27 21:32:01

标签: sql sql-server sql-server-2005 hierarchical-data

我有一个“Employee”表,其中包含一个“EmployeeID”列和一个代表Employee的列    老板(BossID)又是“员工”表中的员工。如何跟踪从给定“EmployeeID”到最顶层Boss的层次结构。我不想在这里使用自联接方法,我也在使用SQL Server 2005。

谢谢

马努

1 个答案:

答案 0 :(得分:6)

您必须使用某种类型的自连接,基本上使用您描述的表结构,但如果需要关注,可以使用递归CTE来处理层次结构的任意深度吗?

WITH cte AS
(
SELECT EmployeeID, BossId
FROM Employee where EmployeeID = @EmployeeID
UNION ALL
SELECT e.EmployeeID, e.BossId
FROM Employee e JOIN cte ON cte.BossId = e.EmployeeID
)
SELECT EmployeeID 
FROM cte