Hierarchiczne i rekurencyjne zapytania w SQL Server
Jasmin Ludolf
Content Developer
Składa się z 4 części:
WITH cte_name AS (-- Anchor member initial_queryUNION ALL -- Recursive member recursive_query termination_condition )SELECT * FROM cte_name
Przy więcej niż 100 krokach rekurencji należy zwiększyć ich liczbę:
OPTION(MAXRECURSION 32767)Następujące instrukcje SQL są niedozwolone: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP
Liczba kolumn w elemencie zakotwiczającym i rekurencyjnym musi być taka sama
Typy danych w elemencie zakotwiczającym i rekurencyjnym muszą być takie same
Obliczanie silni:
Silnia liczby
nto iloczyn wszystkich dodatnich liczb całkowitych mniejszych lub równychn:
3! = 1 x 2 x 3 = 6
Silnia n! zdefiniowana rekurencyjnie:
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
Hierarchiczne i rekurencyjne zapytania w SQL Server