我想獲取給定主管/員工下的員工串列。
它應該回傳他/她下的所有副主管及其副主管和員工。
以下是所有員工及其名稱的串列。
| 企業標識 | 姓名 | 指定 | HeadEmID |
|---|---|---|---|
| 1 | 首席執行官 | 1 | 0 |
| 2 | CountryHead-美國 | 2 | 1 |
| 3 | CountryHead-英國 | 2 | 1 |
| 4 | StateHead-USA-A | 3 | 2 |
| 5 | 國家元首-美國-B | 3 | 2 |
| 6 | 國家元首-UK-C | 3 | 3 |
| 7 | ZoneHead-A | 9 | 6 |
| 8 | 區域頭-B | 9 | 6 |
| 9 | ZoneHead-C | 9 | 4 |
| 10 | CityHead-A | 12 | 7 |
假設我們問誰屬于“CountryHead-UK”?
它應該回傳
| 企業標識 | 姓名 | 指定 | 頭 |
|---|---|---|---|
| 3 | CountryHead-英國 | 2 | 1 |
| 6 | 國家元首-UK-C | 3 | 3 |
| 7 | ZoneHead-A | 9 | 6 |
| 8 | 區域頭-B | 9 | 6 |
| 10 | CityHead-A | 12 | 7 |
如果我們問誰應該在 CEO 之下,那么它應該回傳每個人(對于這個示例資料)
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
小提琴:https ://dbfiddle.uk/YZH65Xvi
uj5u.com熱心網友回復:
感謝拉努的提示。
以下作業。
with cte as (
select e.Empid, e.Name, e.Head, b.Name N1, b.Head new_boss
from #a e
left join #a b on b.Empid = e.Head
union all
select c.Empid, c.Name, c.new_boss, e.name, e.head
from cte c
join #a e on e.Empid = c.new_boss
)
select Empid, Name, Head, N1
from cte WHERE n1 = 'CountryHead-UK'
order by Empid, head
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/528479.html
下一篇:基于相同的列值Sql創建列的排列
