Query gerarchiche e ricorsive in SQL Server
Jasmin Ludolf
Content Developer
È composta da 4 parti:
WITH cte_name AS (-- Membro di base initial_queryUNION ALL -- Membro ricorsivo recursive_query termination_condition )SELECT * FROM cte_name
Per più di 100 passi di ricorsione, aumenta il limite:
OPTION(MAXRECURSION 32767)Non sono consentite le seguenti istruzioni SQL: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP
Anchor e membro ricorsivo devono avere lo stesso numero di colonne
Anchor e membro ricorsivo devono avere gli stessi tipi di dato
Calcolo del fattoriale:
Il fattoriale di
nè il prodotto di tutti gli interi positivi ≤n:
3! = 1 x 2 x 3 = 6
Il fattoriale n! è definito ricorsivamente così:
0! = 1 per iteration = 1(n+1)! = n! * (iteration+1) per 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
Query gerarchiche e ricorsive in SQL Server