DECLARE @Category TABLE(CategoryID int,ParentCategoryID int, Name nvarchar(1000))
INSERT INTO @Category(CategoryID,ParentCategoryID,Name)
VALUES
(1 , NULL, 'A' ),
(2 , 1 , 'B' ),
(3 , 1 , 'C' ),
(4 , 2 , 'D' ),
(5 , 2 , 'E' ),
(6 , 3 , 'F' ),
(7 , 1 , 'G' ),
(8 , 5 , 'H' ),
(9 , 7 , 'I' ),
(10, 8 , 'J' );
WITH Recur AS (
SELECT CategoryID, ParentCategoryID, Name, Name AS NameNavigation
FROM @Category
UNION ALL
SELECT r.CategoryID, c.ParentCategoryID, r.Name, CAST(c.Name + N' -> ' + r.NameNavigation AS nvarchar(1000))
FROM @Category c
INNER JOIN Recur r ON r.ParentCategoryID = c.CategoryID
)
SELECT CategoryID,Name,NameNavigation
FROM Recur
WHERE ParentCategoryID IS NULL
ORDER BY CategoryID;
____________________________________________________
Deja View - The strange feeling that somewhere, sometime you've optimised this query before
How to get the best help on a forum
http://www.sqlservercentral.com/articles/Best+Practices/61537