SQL Server Recursive CTE

SQL Server Recursive CTE
Wspólne wyrażenia tabeli lub w skrócie CTE są pomocną funkcją w SQL, która pozwala zdefiniować tymczasowy zestaw wyników, z którego może użyć inne zapytanie.

Recoursive CTE jest wyrażeniem CTE, które odwołuje się. Rekurencyjny CTE działa poprzez zwrócenie podzbioru, a następnie odwołuje się, aż zwróci wszystkie wyniki.

CTE rekurencyjne są przydatne podczas zapytania do zagnieżdżonych/wielopoziomowych lub hierarchicznych zestawów danych. Na przykład, jeśli masz komponent zawierający inne dane i że dane zawierają inne zagnieżdżone dane, rekurencyjny CTE jest dobrym sposobem na zapytanie o takie dane.

SQL Server Recursive CTE

Poniżej przedstawiono składnię do wykonywania rekurencyjnego CTE:

Z Expression_name (kolumn_list)
JAK
(
inicitial_query
Związek All
Recursive_query
)
WYBIERAĆ *
Z Expression_name

Przykład - Podstawowy przykładowy przykład CTE

Poniższy przykład pokazuje podstawowe użycie funkcji rekurencyjnej CTE na serwerze SQL:

z cte (n) jako
(
WYBIERAĆ
1
Związek All
WYBIERAĆ
n + 1
Z
cte
GDZIE
N < 5
)
WYBIERAĆ
*
Z
cte;

Wyjście:

n |
-+
1 |
2 |
3 |
4 |
5 |

Przykład 2 - Używanie CTE do obliczenia dnia tygodnia.

Poniższy przykład pokazuje, jak używać rekurencyjnego CTE do określenia liczby dni w tygodniu.

Z CTE_EXEC (n,
dzień tygodnia)
JAK (
WYBIERAĆ
0,
DateName (W, 0)
Związek All
WYBIERAĆ
n + 1,
Datename (w, n + 1)
Z
CTE_EXEC
GDZIE
N < 6
)
WYBIERAĆ
dzień tygodnia
Z
cte_exec;

Powstałe wyjście jest jak pokazano:

Wniosek

Jest to podstawa pracy z rekurencyjnymi CTES na SQL Server.