查询以查找所有子节点的最顶层(根)节点

时间:2016-11-06 09:39:53

标签: sql-server recursion tree-traversal

在我的数据库(SQL Server)中,我有一个员工信息表。每个员工都有一名经理。表中有员工的层次结构。以下是此表中的一些演示数据

EmpId | Name    | Managerid
----- | ------- | ---------
1     | John    | 0
2     | Thomas  | 1
3     | William | 1
4     | Richard | 3
5     | Mary    | 0 
6     | Anne    | 4
7     | Matthew | 5
8     | Samuel  | 7
9     | Sarah   | 8
10    | Walter  | 5
11    | Ellen   | 3
12    | Amy     | 0
13    | Rachel  | 12
14    | David   | 4
15    | Lucy    | 3 

我的要求是找出每位员工的最高管理者。所以结果看起来应该是

EmpId | Name    | ManagerName
----- | ------- | ---------
1     | John    | -
2     | Thomas  | John
3     | William | John
4     | Richard | John
5     | Mary    | - 
6     | Anne    | John
7     | Matthew | Mary
8     | Samuel  | Mary
9     | Sarah   | Mary
10    | Walter  | Mary
11    | Ellen   | John
12    | Amy     | -
13    | Rachel  | Amy
14    | David   | John
15    | Lucy    | John

我怎样才能得到这个结果。

0 个答案:

没有答案