Det verkar ju riktigt fiffigt, en fundering bara, jag tycker sorteringen blir fel.
Ex.
WITH KeyList (KeywordId, ParentKeywordId, Keyword, Level)
AS
(
-- Anchor member definition
SELECT k.KeywordId, k.ParentKeywordId, k.Keyword, 0 AS Level
FROM Keywords AS k
WHERE k.ParentKeywordId IS NULL
UNION ALL
-- Recursive member definition
SELECT k.KeywordId, k.ParentKeywordId, k.Keyword, Level + 1
FROM Keywords AS k
INNER JOIN KeyList AS d
ON k.ParentKeywordId = d.KeywordId
)
-- Statement that executes the CTE
SELECT KeywordId, ParentKeywordId, Keyword, Level
FROM KeyList