У меня есть две таблицы: EmployeeMaster
и EmployeeDetails
. Схема обоих, как показано ниже: Создать иерархию сотрудников
Образец данных в обеих таблицах показано:
Я хочу создать иерархию с помощью EmployeeDetails
таблицы в первую очередь. В этой таблице содержится столбец с именем: «Менеджер». EmployeeId
Диспетчера необходимо выбрать из таблицы EmployeeMaster
.
Вот как должна быть сформирована иерархия. EmployeeId передается как параметр хранимой процедуры. Необходимо подобрать двух надзирателей этого Сотрудника и выбрать 10 сотрудников ниже этого сотрудника в старшинстве.
Например, я передаю EmployeeId из Josh.Berkus в хранимую процедуру. Хранимая процедура запрос должен возвращать иерархии, как показано ниже:
Я хочу, чтобы конечный результат в следующем формате:
EMPLOYEE_ID .... Manager_Id
-------- --- .... ------------
Обратите внимание: Manager_Id является EmployeeId of Manager.
Я попытался использовать CTE с объединением всего запроса, но не смог получить его правильно.
В качестве альтернативы, я собираюсь создать единую временную таблицу и заполнять записи из обеих таблиц. В этом случае, как будет работать запрос? – RKh
@RKh, как я уже сказал, ваша хранимая процедура должна будет запускать 2 запроса: один для подъема и другой вниз, а затем вы можете СОЕДИНИТЬ результаты ... проверить новую ссылку в моем ответе ... – Leonardo
Я пробовал CTE, но это didn работайте правильно. Вы правы, для заполнения третьей таблицы необходимы два запроса. Любая идея о том, как получить 10 сотрудников ниже выбранного сотрудника? – RKh