;WITH CTE AS( SELECT forumId,ParentId,HitNumber, Seq = CAST(','+CAST(forumId AS VARCHAR(2)) AS VARCHAR(20)) FROM #tab1 WHERE ParentId IS NULL UNION ALL SELECT DD2.forumId, DD2.ParentId, DD2.HitNumber, Seq = CAST(CTE.Seq + ',' + CAST(DD2.forumId AS VARCHAR(2)) AS VARCHAR(20)) FROM #tab1 AS DD2 INNER JOIN CTE ON CTE.ForumId = DD2.parentId)SELECT c.forumId, c.ParentId, x.TotalHitNumber FROM CTE cCROSS APPLY ( SELECT TotalHitNumber = SUM(HitNumber) FROM CTE WHERE Seq+',' LIKE '%,'+CAST(c.forumId AS VARCHAR(2))+',%') xORDER BY c.forumId