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