sql >> Database >  >> RDS >> Sqlserver

Hoe het hiërarchieniveau van deze query te krijgen

U moet een kolom toevoegen met de naam Level (of hoe je het ook wilt noemen) - zowel naar het "anker" SELECT als het recursieve deel van je CTE - als volgt:

WITH CategoryRec AS 
(
    SELECT Id, Parentid, Name, 1 AS 'Level'
    FROM dbo.Category

    UNION ALL

    SELECT cr.Id, c.Parentid, cr.Name, cr.Level + 1 
    FROM CategoryRec AS cr 
    INNER JOIN dbo.Category AS c ON cr.Parentid = c.Id
    WHERE c.Parentid IS NOT NULL
)
SELECT DISTINCT Id, Parentid, Name, Level
FROM  CategoryRec


  1. Staatsverklaring - Php Mysqli

  2. Converteer tekst naar getal in MySQL-query

  3. Inner Join Three Tables

  4. Geen MySQL-records keren terug wanneer een bepaalde limiet wordt overschreden?