Requêtes hiérarchiques et récursives dans SQL Server
Jasmin Ludolf
Content Developer
Se compose de 4 parties :
WITH cte_name AS (-- Membre ancre initial_queryUNION ALL -- Membre récursif recursive_query termination_condition )SELECT * FROM cte_name
Au-delà de 100 étapes de récursion, augmentez la limite :
OPTION(MAXRECURSION 32767)Les instructions SQL suivantes ne sont pas autorisées : GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP
Le nombre de colonnes du membre ancre et du membre récursif doit être identique
Le type de données du membre ancre et du membre récursif doit être identique
Calcul du factoriel :
Le factoriel de
nest le produit de tous les entiers positifs inférieurs ou égaux àn:
3! = 1 x 2 x 3 = 6
Le factoriel n! se définit récursivement ainsi :
0! = 1 pour iteration = 1(n+1)! = n! * (iteration+1) pour iteration > 1WITH recursion AS(SELECT 1 AS iterationCounter,1 AS factorialUNION ALL SELECT iterationCounter+1,factorial * (iterationCounter+1) FROM recursionWHERE iterationCounter < 10 )SELECT factorial FROM recursion
3628800
Requêtes hiérarchiques et récursives dans SQL Server