Иерархические и рекурсивные запросы в SQL Server
Jasmin Ludolf
Content Developer
Что такое рекурсия?

Рекурсия — это использование процедуры, подпрограммы, функции или алгоритма, который вызывает сам себя один или несколько раз до выполнения заданного условия
Определение обобщённого табличного выражения (CTE):
WITH CTEtable as (
<select statement on a table>
)
SELECT *
FROM CTEtable
Задаёт временный именованный результирующий набор, известный как обобщённое табличное выражение (CTE)
Определение рекурсивного CTE:
WITH cte_name AS (
-- Anchor member
<cte_initial_query>
UNION ALL
-- Recursive member
<cte_recursive_query> )
SELECT *
FROM cte_name
Примеры из реальной практики:
Операции с таблицей:
CREATE, INSERT, ALTER, DROPРеляционная модель данных:
Иерархическая и сетевая модели данных:


Типовые задачи:
Планирование авиаперелётов:

Как собрать автомобиль?

Моделирование энергосети

Иерархические и рекурсивные запросы в SQL Server