Wim, thanks man, sorry for the trouble I managed to get it working with your Query slightly modified:
Code:
DECLARE @TopLevelId INT;
SET @TopLevelId = 23;
WITH CTE AS
(SELECT id, name, parentid, id as Adam, 1 as level
FROM Category
WHERE id = @TopLevelId
UNION ALL
SELECT Category.id, Category.name, Category.parentid, CTE.Adam, CTE.level + 1
FROM Category
INNER JOIN CTE ON
Category.parentid = CTE.id
WHERE Category.id <> @TopLevelId
),
Prods AS
(SELECT productid,
description,
categoryId,
NewId() as GUID_
FROM Products
),
Prods5 AS
(SELECT productid,
description,
categoryId,
ROW_NUMBER() OVER (PARTITION by categoryId ORDER BY GUID_) as RowNum
FROM Prods
)
SELECT CTE.id, CTE.name, Prods5.productid, Prods5.description
FROM CTE
LEFT OUTER JOIN Prods5 ON
CTE.id = Prods5.categoryId AND
Prods5.RowNum <= 5
ORDER BY level, CTE.id
It's working fantastic now thanks so much WIM, great stuff
