Hierarchical and Recursive Queries in SQL Server
Jasmin Ludolf
Content Developer
Skládá se ze 4 částí:
WITH cte_name AS (-- Anchor member initial_queryUNION ALL -- Recursive member recursive_query termination_condition )SELECT * FROM cte_name
Pro více než 100 kroků rekurze zvyšte jejich počet:
OPTION(MAXRECURSION 32767)Následující příkazy SQL nejsou povoleny: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP
Počet sloupců kotevního a rekurzivního členu musí být stejný
Datové typy kotevního a rekurzivního členu musí být stejné
Výpočet faktoriálu:
Faktoriál čísla
nje definován jako součin všech kladných celých čísel menších nebo rovnýchn:
3! = 1 x 2 x 3 = 6
Faktoriál n! je rekurzivně definován takto:
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
Hierarchical and Recursive Queries in SQL Server