样本表
Emp Id Emp Name Manager Id
1001 arun 1004
1002 Bharath 1004
1003 Chitra 1004
1004 Devi 1005
1005 Eli 1006
1006 Fatima 1007
1007 Ganesh 1008
当我选择经理ID 1004时,它应该显示三个名称arun,bharath,chitra,如果我选择1005,它应该显示devi,arun,bharath,chitra
仅供参考 - ManagerId与EMPId相同。
如何在不使用函数的情况下准备sql?
答案 0 :(得分:2)
如果您使用的是SQL Server 2005及更高版本,则可以使用公用表表达式。在这个例子中,我假设ManagerId为null表示最顶层的经理。
With HumanResources As
(
Select EmpId, EmpName, ManagerId, EmpName As ManagerName
From Employees
Where ManagerId Is Null
Union All
Select E.EmpId, E.EmpName, E.ManagerId, H.EmpName
From Employees As E
Join HumanResources As H
On H.EmpId= E.ManagerId
)
Select EmpId, EmpName, ManagerId, ManagerName
From HumanResources
有关详情,请参阅Recursive Queries。