如何获取指定负责人及全下属层级的员工列表?
需求:获取指定负责人的全层级下属列表
获取指定负责人/直属上级管辖的员工列表,需返回该负责人所有下属层级的主管及员工。
全体员工职位信息表
| EmpID | Name | Designation | HeadEmpID |
|---|---|---|---|
| 1 | CEO | 1 | 0 |
| 2 | CountryHead-USA | 2 | 1 |
| 3 | CountryHead-UK | 2 | 1 |
| 4 | StateHead-USA-A | 3 | 2 |
| 5 | StateHead-USA-B | 3 | 2 |
| 6 | StateHead-UK-C | 3 | 3 |
| 7 | ZoneHead-A | 9 | 6 |
| 8 | ZoneHead-B | 9 | 6 |
| 9 | ZoneHead-C | 9 | 4 |
| 10 | CityHead-A | 12 | 7 |
查询示例
示例1:查询'CountryHead-UK'的下属
返回结果包含该负责人及所有层级下属:
| EmpID | Name | Designation | Head |
|---|---|---|---|
| 3 | CountryHead-UK | 2 | 1 |
| 6 | StateHead-UK-C | 3 | 3 |
| 7 | ZoneHead-A | 9 | 6 |
| 8 | ZoneHead-B | 9 | 6 |
| 10 | CityHead-A | 12 | 7 |
示例2:查询CEO的下属
返回所有员工(基于当前示例数据)
SQL测试代码
DROP TABLE IF EXISTS #A CREATE TABLE #A (EmpID int,Name VARCHAR(MAX), Designation INT, HeadEmpID INT) INSERT INTO #A VALUES (1,'CEO',1,0) INSERT INTO #A VALUES (2,'CountryHead-USA',2,1) INSERT INTO #A VALUES (3,'CountryHead-UK',2,1) INSERT INTO #A VALUES (4,'StateHead-USA-A',3,2) INSERT INTO #A VALUES (5,'StateHead-USA-B',3,2) INSERT INTO #A VALUES (6,'StateHead-UK-C',3,3) INSERT INTO #A VALUES (7,'ZoneHead-A',9,6) INSERT INTO #A VALUES (8,'ZoneHead-B',9,6) INSERT INTO #A VALUES (9,'ZoneHead-C',9,4) INSERT INTO #A VALUES (10,'CityHead-A',12,7) SELECT * FROM #A a
内容的提问来源于stack exchange,提问作者Teknas
相关产品推荐
相关产品推荐

