Hämta hierarkinivån
Ett vanligt problem vid rekursion är att hålla reda på vilket rekursionssteg man befinner sig på. I IT-organisationen innebär det att spåra varje anställds position i hierarkin.

För detta använder du ett LEVEL-fält som håller reda på det aktuella rekursionssteget. Du behöver introducera fältet i ankarmedlemmen och öka värdet för varje rekursionssteg i rekursionsmedlemmen.
Tänk på att den första hierarkinivån är 0, den andra nivån är 1 och så vidare.
Den här övningen är en del av kursen
Hierarkiska och rekursiva frågor i SQL Server
Övningsinstruktioner
- Initiera fältet
LEVELtill 1 i början av rekursionen. - Välj IT-direktörens information som startsteg i CTE:n genom att filtrera på
Supervisor. - Sätt
LEVELtill det aktuella rekursionssteget. - Utför en
JOINmed den definierade CTE:n påID:n för chefen och den anställde.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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;