Resumé: i denne tutorial vil du lære om de fælles tabel udtryk eller CTE i SQL Server ved hjælp af WITH
klausul.
Introduktion til CTE i S .l Server
CTE står for common table e .pression. En CTE giver dig mulighed for at definere et midlertidigt navngivet resultatet, at ledige midlertidigt i udførelsen omfattet af en erklæring, som f.eks. SELECT
INSERT
UPDATE
DELETE
, eller MERGE
.,
i Det følgende vises en fælles syntaks af en CTE i SQL-Server:
Code language: SQL (Structured Query Language) (sql)
I denne syntaks:
- Første, skal du angive udtrykket navn (
expression_name
), som du kan se senere i en forespørgsel. - angiv derefter en liste over kommaseparerede kolonner efter udtryksnavnet. Antallet af kolonner skal være det samme som antallet af kolonner defineret i
CTE_definition
. - brug derefter nøgleordet som efter udtrykket navn eller kolonneliste, hvis kolonnelisten er angivet.,
- Definer derefter en
SELECT
erklæring, hvis resultatsæt udfylder det fælles tabeludtryk. - Endelig henvise til det fælles bord udtryk i en forespørgsel (
SQL_statement
), f.eks.SELECT
INSERT
UPDATE
DELETE
, ellerMERGE
.
Vi foretrækker at bruge almindelige tabeludtryk frem for at bruge underforespørgsler, fordi almindelige tabeludtryk er mere læsbare., Vi bruger også CTE i forespørgsler, der indeholder analytiske funktioner (eller vinduesfunktioner)
s .l Server CTE eksempler
lad os tage nogle eksempler på at bruge almindelige tabeludtryk.
A) Simpel SQL Server CTE eksempel
Denne forespørgsel bruger en CTE til at returnere afståelsessummer ved salg stabe i 2018:
følgende billede viser resultatet, der er:
I dette eksempel:
- Første, vi definerede
cte_sales_amounts
som navnet på den fælles tabel udtryk., CTE returnerer et resultat, at der består af tre kolonnerstaff
year
ogsales
, der stammer fra den definition forespørgsel. - Andet, vi konstrueret en forespørgsel, der returnerer den samlede solgte mængde af salgspersonale og år ved at forespørge data fra
orders
order_items
ogstaffs
tabeller. - for det tredje henviste vi til CTE i den ydre forespørgsel og valgte kun de rækker, hvis år er 2018.,
bemærkede, at dette eksempel udelukkende er til demonstrationsformålet for at hjælpe dig med gradvist at forstå, hvordan almindelige bordudtryk fungerer. Der er en mere optimal måde at opnå resultatet på uden at bruge CTE.
B) brug af et fælles tabeludtryk til at lave rapportgennemsnit baseret på tællinger
dette eksempel bruger CTE til at returnere det gennemsnitlige antal salgsordrer i 2018 for alle salgspersonale.
Her er output:
Code language: SQL (Structured Query Language) (sql)
I dette eksempel:
for det Første, vi brugte cte_sales
som navnet på den fælles tabel udtryk., Vi sprang over kolonnelisten over CTE, så den er afledt af CTE-definitionserklæringen. I dette eksempel inkluderer det staff_id
og order_count
kolonner.
for det andet bruger vi følgende forespørgsel til at definere det resultatsæt, der udfylder det fælles tabeludtryk cte_sales
. Forespørgslen returnerer antallet af ordrer i 2018 af salgspersonale.
for det tredje henviser vi til cte_sales
i den ydre erklæring og bruger AVG()
funktionen for at få den gennemsnitlige salgsordre af alle medarbejdere.,
Code language: SQL (Structured Query Language) (sql)
C) ved Hjælp af flere SQL Server CTE i en enkelt forespørgsel eksempel
Det følgende eksempel bruger to CTE cte_category_counts
og cte_category_sales
for at returnere antallet af produkter og salg for hver produktkategori. Den ydre forespørgsel forbinder to CTE ‘ er ved hjælp af kolonnen category_id
.,
Her er resultatet:
I denne tutorial, du har lært at bruge det fælles bord udtryk eller CTE i SQL Server til at konstruere komplekse forespørgsler i en let at forstå måde.