SQL Server Recursive CTE

SQL Server Recursive CTE
Les expressions de table communes, ou CTE pour faire court, sont une caractéristique utile de SQL qui vous permet de définir un ensemble de résultats nommé temporaire qu'une autre requête peut utiliser.

Un CTE récursif, à la main, est une expression CTE qui se fait référence. Un CTE récursif fonctionne en renvoyant un sous-ensemble puis se fait référence jusqu'à ce qu'il renvoie tous les résultats.

Les CTES récursifs sont utiles lors de l'interrogation à des ensembles de données imbriqués / multi-niveaux ou hiérarchiques. Par exemple, si vous avez un composant qui contient d'autres données et que les données contiennent d'autres données imbriquées, un CTE récursif est un bon moyen d'interroger ces données.

SQL Server Recursive CTE

Ce qui suit illustre la syntaxe pour effectuer un CTE récursif:

Avec expression_name (column_list)
COMME
(
Initial_query
Union All
récursive_query
)
SÉLECTIONNER *
De l'expression_name

Exemple - Exemple de base récursif CTE

L'exemple suivant montre l'utilisation de base de la fonction CTE récursive dans SQL Server:

avec cte (n) comme
(
SÉLECTIONNER
1
Union All
SÉLECTIONNER
n + 1
DEPUIS
cte

n < 5
)
SÉLECTIONNER
*
DEPUIS
CTE;

Sortir:

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

Exemple 2 - Utilisation du CTE pour calculer le jour de la semaine.

L'exemple suivant montre comment utiliser le CTE récursif pour déterminer le nombre de jours en une semaine.

Avec cte_exec (n,
jour de la semaine)
COMME (
SÉLECTIONNER
0,
Datename (w, 0)
Union All
SÉLECTIONNER
n + 1,
Datename (w, n + 1)
DEPUIS
cte_exec

n < 6
)
SÉLECTIONNER
jour de la semaine
DEPUIS
cte_exec;

La sortie résultante est comme indiqué:

Conclusion

Ceci est les bases mêmes de travailler avec des CTES récursives dans SQL Server.