this what u want?DECLARE @T TABLE( NodeID Int, ParentNodeID Int, [Text] nVarChar(100), CustID Int)INSERT INTO @TSELECT 1, NULL, 'TopNodeName 1', 23 UNION ALLSELECT 2, 1, 'SubFolder 1', 23 UNION ALLSELECT 3, 2, 'Product 1', 23 UNION ALLSELECT 4, NULL, 'TopNodeName 2', 23 UNION ALLSELECT 5, 4, 'Product 2', 23 UNION ALLSELECT 6, NULL, 'TopNodeName 1', 33 UNION ALLSELECT 7, 6, 'SubFolder 1', 33 UNION ALLSELECT 8, 7, 'Product 1', 33; WITH Cte (NodeID, ParentNodeID, [Text], CustID, RootNode)AS( SELECT NodeID, ParentNodeID, [Text], CustID, NodeID FROM @T WHERE ParentNodeID IS NULL UNION ALL SELECT T.NodeID, T.ParentNodeID, T.[Text], T.CustID, C.RootNode FROM Cte C INNER JOIN @T T ON T.ParentNodeID = C.NodeID)SELECT C.NodeID, C.ParentNodeID, C.[Text], C.CustID, T.[Text] AS 'ParentNode'FROM Cte CINNER JOIN @T T ON T.NodeID = C.RootNodeORDER BY 1
"There is only one difference between a dream and an aim.A dream requires soundless sleep to see,whereas an aim requires sleepless efforts to achieve..!!"