This compiles, but I'm not sure it's correct:DECLARE @catid1 INT = 14;WITH CTE(LastName, CatID, Parent) AS(SELECT A.LastName, A.CatID, B.ParentIDFROM CatPub AINNER JOIN Category C ON A.CatID=C.CategoryIDWHERE A.CatID = @catid1UNION ALLSELECT A.LastName, A.CatID, C.ParentIDFROM CTE AINNER JOIN Category C ON A.Parent=C.CategoryID)SELECT LastName, CatID FROM CTE OPTION (MAXRECURSION 4)
I'm assuming you don't actually need the @catid2,3,4 variables.