Демонстрационная таблица
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
когда я выбираю идентификатор 1004 менеджера, он должен отобразить три имени arun, bharath, chitra и если я выбираю 1005, он должен отобразить devi, arun, bharath, chitra
К вашему сведению - ManagerId - то же как EMPId.
Как я могу подготовить sql с использованием функций?
Если вы используете 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
Подробнее см. в Рекурсивные запросы.