résumé: dans ce tutoriel, vous découvrirez l’expression de table commune ou CTE dans SQL Server en utilisant la clauseWITH
.
Introduction à CTE dans SQL Server
CTE signifie common table expression. Un CTE permet de définir un ensemble de résultats nommé temporaire disponible que temporairement dans l’étendue d’exécution d’une instruction telle que: SELECT
, INSERT
, UPDATE
, DELETE
ou MERGE
.,
l’exemple suivant illustre La syntaxe commune de CTE dans SQL Server:
Code language: SQL (Structured Query Language) (sql)
Dans cette syntaxe:
- tout d’Abord, préciser l’expression nom (
expression_name
) auquel vous pouvez vous référer plus tard dans une requête. - ensuite, spécifiez une liste de colonnes séparées par des virgules après expression_name. Le nombre de colonnes doit être le même que le nombre de colonnes défini dans
CTE_definition
. - ensuite, utilisez le mot-clé AS après le nom de l’expression ou la liste des colonnes si la liste des colonnes est spécifiée.,
- après, définissez une instruction
SELECT
dont le jeu de résultats remplit l’expression de table commune. - Enfin, reportez-vous à l’expression de table commune dans une requête (
SQL_statement
)SELECT
,INSERT
,UPDATE
,DELETE
ouMERGE
.
Nous préférons utiliser des expressions de table communes plutôt que d’utiliser des sous-requêtes car les expressions de table communes sont plus lisibles., Nous utilisons également CTE dans les requêtes qui contiennent des fonctions analytiques (ou des fonctions de fenêtre)
SQL Server CTE examples
prenons quelques exemples d’utilisation d’expressions de table courantes.
A) exemple simple de CTE SQL Server
cette requête utilise un CTE pour renvoyer les montants des ventes par le personnel de vente en 2018:
l’image suivante montre le jeu de résultats:
dans cet exemple:
- tout d’abord, nous avons défini
cte_sales_amounts
comme nom de l’expression de table commune., le CTE renvoie un résultat composé de trois colonnesstaff
,year
Etsales
dérivées de la requête de définition. - Deuxièmement, nous avons construit une requête qui renvoie le montant total des ventes par personnel de vente et par année en interrogeant les données des tables
orders
,order_items
etstaffs
. - Troisièmement, nous avons fait référence au CTE dans la requête externe et ne sélectionnons que les lignes dont l’année est 2018.,
a noté que cet exemple est uniquement à des fins de démonstration pour vous aider à comprendre progressivement le fonctionnement des expressions de table courantes. Il existe un moyen plus optimal d’obtenir le résultat sans utiliser CTE.
B) Utilisation d’une expression de table commune pour établir des moyennes de rapport basées sur des comptes
Cet exemple utilise le CTE pour renvoyer le nombre moyen de commandes client en 2018 pour tous les personnels de vente.
Voici le résultat:
Code language: SQL (Structured Query Language) (sql)
Dans cet exemple:
tout d’Abord, nous avons utilisé la balise cte_sales
comme le nom de l’expression de table commune., Nous avons ignoré la liste des colonnes du CTE afin qu’elle soit dérivée de l’instruction de définition CTE. Dans cet exemple, il inclut staff_id
et order_count
colonnes.
Deuxièmement, nous utilisons la requête suivante pour définir le jeu de résultats qui remplit l’expression de table commune cte_sales
. La requête renvoie le nombre de commandes en 2018 par le personnel de vente.
Troisièmement, nous nous référons à la cte_sales
dans la déclaration externe et utilisons la fonction AVG()
pour obtenir la commande client moyenne par tous les états-majors.,
Code language: SQL (Structured Query Language) (sql)
C) à l’Aide de multiples SQL Server CTE dans un seul exemple de requête
L’exemple suivant utilise deux CTE cte_category_counts
et cte_category_sales
pour retourner le nombre de produits et de ventes pour chaque catégorie de produit. La requête externe joint deux Cte en utilisant la colonnecategory_id
.,
Voici le résultat:
Dans ce tutoriel, vous avez appris comment utiliser les expressions de table communes ou CTE dans SQL Server pour construire des requêtes complexes dans un format facile à comprendre la manière.