La récursivité en SQL pour la construction d’arbre par exemple pose souvent problème avec SQL Server. Pourtant, depuis la version 2005 vous pouvez utiliser les requêtes récursives via les expressions de table commune ou CTE pour Common Table Expression.
Comme d’habitude voici un exemple très simple :
WITH
treePerso (id_MaTable, id_Pere_MaTable, TreeLevel)
AS (SELECT id_MaTable, id_Pere_MaTable, 0 AS TreeLevel
FROM MaTable
WHERE id_Pere_MaTable IS NULL /*1er niveau*/
UNION ALL
SELECT M.id_MaTable, M.id_Pere_MaTable, TreeLevel + 1
FROM MaTable M
INNER JOIN treePerso T ON T.id_MaTable = M.id_Pere_MaTable)
SELECT * FROM treePerso
Vous trouverez plus d’explication sur Google ou encore ici : http://sqlpro.developpez.com/cours/sqlserver/cte-recursives