SQL Server rekursiv CTE

SQL Server rekursiv CTE
Gemeinsame Tabellenausdrücke oder kurz CTE sind eine hilfreiche Funktion in SQL, mit der Sie einen temporären benannten Ergebnissatz definieren können, den eine andere Abfrage verwenden kann.

Ein rekursives CTE auf der Hand ist ein CTE -Ausdruck, der sich selbst verweist. Ein rekursives CTE funktioniert, indem sie eine Teilmenge zurückgibt und sich dann selbst bezieht, bis es alle Ergebnisse zurückgibt.

Rekursive CTEs sind nützlich, wenn Sie verschachtelte/mehrstufige oder hierarchische Datensätze abfragen. Wenn Sie beispielsweise eine Komponente haben, die andere Daten enthält und diese Daten andere verschachtelte Daten enthalten, ist ein rekursiver CTE eine gute Möglichkeit, solche Daten abzufragen.

SQL Server rekursiv CTE

Das Folgende zeigt die Syntax für die Durchführung eines rekursiven CTE:

Mit expression_name (column_list)
ALS
(
initial_query
Gewerkschaft alle
rekursiv_query
)
WÄHLEN *
Aus Expression_Name

Beispiel - Basic rekursives CTE -Beispiel

Das folgende Beispiel zeigt die grundlegende Verwendung der rekursiven CTE -Funktion in SQL Server:

mit cte (n) als
(
WÄHLEN
1
Gewerkschaft alle
WÄHLEN
N + 1
AUS
CTE
WO
N < 5
)
WÄHLEN
*
AUS
CTE;

Ausgang:

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

Beispiel 2 - Verwenden Sie CTE, um den Wochentag zu berechnen.

Das folgende Beispiel zeigt, wie ein rekursives CTE verwendet wird, um die Anzahl der Tage in einer Woche zu bestimmen.

Mit cte_exec (n,
Wochentag)
ALS (
WÄHLEN
0,
DATENAME (W, 0)
Gewerkschaft alle
WÄHLEN
N + 1,
DATENAME (W, N + 1)
AUS
cte_exec
WO
N < 6
)
WÄHLEN
Wochentag
AUS
cte_exec;

Die resultierende Ausgabe ist wie gezeigt:

Abschluss

Dies ist die Grundlagen für die Arbeit mit rekursiven CTEs in SQL Server.