Определение уровня иерархии
При работе с рекурсией важно отслеживать её текущий уровень. В контексте IT-организации это означает определение позиции каждого сотрудника в иерархии.

Для этого используется поле LEVEL, которое хранит номер текущего шага рекурсии. Вам нужно ввести это поле в якорном элементе, а затем увеличивать его значение на каждом шаге рекурсии.
Обратите внимание: первый уровень иерархии соответствует значению 0, второй — 1 и так далее.
Это упражнение является частью курса
Иерархические и рекурсивные запросы в SQL Server
Инструкции к упражнению
- Инициализируйте поле
LEVELзначением 1 в начале рекурсии. - Выберите данные IT-директора в качестве начального шага CTE, применив фильтр по полю
Supervisor. - Задайте значение
LEVEL, соответствующее текущему шагу рекурсии. - Выполните
JOINс определённым CTE по полямIDруководителя и сотрудника.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
WITH employee_hierarchy AS (
SELECT
ID,
NAME,
Supervisor,
-- Initialize the field LEVEL
___ as LEVEL
FROM employee
-- Start with the supervisor ID of the IT Director
WHERE ___ = ___
UNION ALL
SELECT
emp.ID,
emp.NAME,
emp.Supervisor,
-- Increment LEVEL by 1 each step
___ + 1
FROM employee emp
JOIN employee_hierarchy
-- JOIN on supervisor and ID
ON emp.___ = employee_hierarchy.___)
SELECT
cte.Name, cte.Level,
emp.Name as ManagerID
FROM employee_hierarchy as cte
JOIN employee as emp
ON cte.Supervisor = emp.ID
ORDER BY Level;