Ієрархічні та рекурсивні запити в SQL Server
Jasmin Ludolf
Content Developer
Складається з 4 частин:
WITH cte_name AS (-- Початковий (anchor) запит initial_queryUNION ALL -- Рекурсивний запит recursive_query termination_condition )SELECT * FROM cte_name
Якщо потрібно понад 100 кроків рекурсії, збільшіть ліміт:
OPTION(MAXRECURSION 32767)Заборонені такі оператори SQL: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries, TOP
Кількість стовпців у початковому та рекурсивному запитах має збігатися
Типи даних у початковому та рекурсивному запитах мають збігатися
Обчислення факторіала:
Факторіал
n— це добуток усіх додатних цілих чисел, не більших заn:
3! = 1 x 2 x 3 = 6
Факторіал n! визначають рекурсивно так:
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
Ієрархічні та рекурсивні запити в SQL Server