SQL Server における階層型クエリと再帰クエリ
Jasmin Ludolf
Content Developer
4つの構成:
WITH cte_name AS (-- アンカーメンバー 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 (iteration = 1)(n+1)! = n! * (iteration+1) (iteration > 1)WITH 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 における階層型クエリと再帰クエリ