Ray*_*ong 3 sql t-sql sql-server stored-procedures
一个具有挑战性的问题,我有如下表格
EmployeeID BossID
pic http://img16.imageshack.us/img16/7659/20130430113245.jpg
任何创建查询的想法,以便当某个员工进入时,它会查询他下面的所有员工以及谁是他的老板
试试这个查询
你必须像Sohail所提到的那样使用CTE.
WITH DirectReports (bossId, EmpID, Level)
AS
(
-- Anchor member definition
SELECT bossId, empId,
0 AS Level
FROM tbl
WHERE empId = 2
UNION ALL
-- Recursive member definition
SELECT e.bossId, e.empId,
Level + 1 AS Level
FROM tbl e
INNER JOIN DirectReports AS d
ON e.bossId = d.empId
)
-- Statement that executes the CTE
SELECT *
FROM DirectReports;
Run Code Online (Sandbox Code Playgroud)
| BOSSID | EMPID | LEVEL |
--------------------------
| 1 | 2 | 0 |
| 2 | 4 | 1 |
| 4 | 5 | 2 |
| 4 | 6 | 2 |
Run Code Online (Sandbox Code Playgroud)