Rekursiv cte til undsætning....
Opret og udfyld eksempeltabel (Venligst gem os dette trin i dine fremtidige spørgsmål):
DECLARE @T as table( id int, name varchar(100), parent_id int)INSERT INTO @T VALUES(1, 'A', NULL),(2, 'A.1', 1) ,(3, 'A.2', 1),(4, 'A.1.1', 2),(5, 'B', NULL),(6, 'B.1', 5),(7, 'B.1.1', 6),(8, 'B.2', 5),(9, 'A.1.1.1', 4),(10, 'A.1.1.2', 4)
Cte:
;WITH CTE AS( SELECT id, name, name as path, parent_id FROM @T WHERE parent_id IS NULL UNION ALL SELECT t.id, t.name, cast(cte.path +','+ t .name som varchar(100)), t.parent_id FROM @T t INNER JOIN CTE ON t.parent_id =CTE.id)
Forespørgslen:
VÆLG id, navn, stiFRA CTE
Resultater:
id navn sti1 A A5 B B6 B.1 B,B.18 B.2 B,B.27 B.1.1 B,B.1,B.1.12 A.1 A,A.13 A .2 A,A.24 A.1.1 A,A.1,A.1.19 A.1.1.1 A,A.1,A.1.1,A.1.1.110 A.1.1.2 A,A.1, A.1.1,A.1.1.2
Se online demo på rextester