Requêtes hiérarchiques et récursives dans SQL Server
Jasmin Ludolf
Content Developer
Comporte 4 parties :
WITH cte_name AS (-- Membre d'ancrage initial_queryUNION ALL -- Membre récursif recursive_query termination_condition )SELECT * FROM cte_name
Pour plus de 100 étapes de récursion, augmentez la limite :
OPTION(MAXRECURSION 32767)Les instructions SQL suivantes ne sont pas permises : GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP
Le nombre de colonnes du membre d'ancrage et du membre récursif doit être identique
Les types de données du membre d'ancrage et du membre récursif doivent être identiques
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 for iteration = 1(n+1)! = n! * (iteration+1) for 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