Bạn có thể làm điều này với một biểu thức bảng chung đệ quy (cte).
WITH X (ProductId, CategoryId) AS (
SELECT ProductId, CategoryId FROM #ProductCategory
UNION ALL
SELECT X.ProductId, C.ParentCategoryId FROM X
INNER JOIN #Category C ON X.CategoryId = C.CategoryId
)
SELECT ProductId, CategoryId FROM X ORDER BY CategoryId, ProductId
Thông tin thêm tại http://msdn.microsoft.com/en-us/ thư viện / ms186243.aspx