Сам соединение и повторяющийся SQL

Демонстрационная таблица

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 с использованием функций?

1
задан Stephane Rolland 3 January 2013 в 09:59
поделиться

1 ответ

Если вы используете 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

Подробнее см. в Рекурсивные запросы.

2
ответ дан 2 September 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: