Oppsummering: i denne opplæringen vil du lære om felles bord uttrykk eller CTE i SQL Server ved hjelp av WITH
klausulen.
Introduksjon til CTE i SQL Server
ETC står for felles bord uttrykk. En CTE lar deg angi en midlertidig heter resultat som er tilgjengelig midlertidig i utførelsen omfanget av en uttalelse som SELECT
, INSERT
, UPDATE
, DELETE
, eller MERGE
.,
følgende viser de vanlige syntaksen til en CTE i SQL Server:
Code language: SQL (Structured Query Language) (sql)
I denne syntaks:
- Første, angi uttrykk navn (
expression_name
) som du kan se senere i en spørring. - Neste, angir en kommaseparert liste med kolonner etter expression_name. Antall kolonner må være det samme som antall kolonner som er definert i
CTE_definition
. - Deretter bruke SOM søkeord etter uttrykket navn eller kolonne liste hvis kolonnen listen er angitt.,
- Etter, definerer du en
SELECT
uttalelse som resultat fyller ut den vanlige tabellen uttrykk. - til Slutt, kan du se vanlige tabell uttrykk i en spørring (
SQL_statement
) eksempelSELECT
,INSERT
,UPDATE
,DELETE
, ellerMERGE
.
Vi foretrekker å bruke felles bord uttrykk heller enn å bruke subqueries fordi felles bord uttrykk er mer lesbar., Vi bruker også CTE i spørringer som inneholder analytiske funksjoner (eller vindu funksjoner)
SQL Server ETC eksempler
La oss ta noen eksempler på bruk av felles bord uttrykk.
A) Enkel SQL Server ETC eksempel
Denne spørringen bruker en CTE å returnere salg beløp ved salg staber i 2018:
følgende bilde viser resultatet sett:
I dette eksempelet:
- Første, vi definert
cte_sales_amounts
som navnet på felles bord uttrykk., CTE returnerer et resultat som består av tre kolonnerstaff
,year
, ogsales
avledet fra den definisjonen spørring. - Andre, konstruerte vi en spørring som returnerer totalt salg mengden av selgere og året ved å spørre etter data fra
orders
,order_items
ogstaffs
tabeller. - Tredje, vi henvist til CTE i ytre spørring og velger bare de radene som i år 2018.,
Bemerket at dette eksemplet er kun for demonstrasjon hensikt å hjelpe deg gradvis forstå hvordan felles bord uttrykk arbeid. Det er en mer optimal måte for å oppnå resultat uten å bruke ETC.
B) ved Hjelp av et felles bord uttrykk for å gjøre rapporten gjennomsnitt basert på tellinger
Dette eksemplet bruker CTE å returnere gjennomsnittlig antall salgsordrer i 2018 for alt salg staber.
Her er resultatet:
Code language: SQL (Structured Query Language) (sql)
I dette eksempelet:
for det Første, vi brukt cte_sales
som navnet på felles bord uttrykk., Vi hoppet over kolonnen liste over CTE så det er avledet fra CTE definisjon uttalelse. I dette eksemplet er det inkluderer staff_id
og order_count
kolonner.
Andre, bruker vi følgende spørring til å definere resultat som fyller ut den vanlige tabellen uttrykk cte_sales
. Spørringen returnerer antall bestillinger i 2018 av selgere.
Tredje, henviser vi til cte_sales
i ytre uttalelse og bruk AVG()
funksjon for å få gjennomsnittet for salg av alle staber.,
Code language: SQL (Structured Query Language) (sql)
C) ved Hjelp av flere SQL Server ETC i en enkelt spørring eksempel
følgende eksempel bruker to CTE cte_category_counts
og cte_category_sales
for å returnere antallet av produkter og salg for hver produktkategori. Den ytre spørring blir to CTEs bruke category_id
kolonne.,
Her er resultat:
I denne opplæringen, har du lært å bruke felles bord uttrykk eller CTE i SQL Server å lage komplekse spørringer i en lett-å-forstå måte.