rezumat: în acest tutorial, veți afla despre expresia comună a tabelului sau CTE în SQL Server utilizând clauza WITH
.
Introducere în CTE în SQL Server
CTE standuri pentru Expresie tabel comun. O CTE vă permite să definiți un nume provizoriu pe set de rezultate care sunt disponibile temporar în domeniul execuției de o mențiune precum SELECT
, INSERT
, UPDATE
, DELETE
sau MERGE
.,
următoarele spectacole comune sintaxa unei CTE în SQL Server:
Code language: SQL (Structured Query Language) (sql)
În această sintaxă:
- în Primul rând, specifica expresia numele (
expression_name
) pentru care va putem referi mai târziu într-o interogare. - apoi, specificați o listă de coloane separate prin virgulă după numele expresiei. Numărul de coloane trebuie să fie același cu numărul de coloane definite în
CTE_definition
. - apoi, utilizați cuvântul cheie AS după numele expresiei sau lista de coloane dacă este specificată lista de coloane.,
- după, definiți o declarație
SELECT
al cărei set de rezultate populează expresia comună a tabelului. - în cele din Urmă, se referă la masa comună de exprimare într-o interogare (
SQL_statement
), cum ar fiSELECT
,INSERT
,UPDATE
,DELETE
sauMERGE
.
Am prefera să utilizeze masă comună expresii, mai degrabă decât de a folosi subinterogări pentru masă comună expresii sunt mai ușor de citit., De asemenea, folosim CTE în interogările care conțin funcții analitice (sau funcții de fereastră)
SQL Server CTE examples
să luăm câteva exemple de utilizare a expresiilor comune ale tabelelor.
A) Simple SQL Server CTE exemplu
Această interogare utilizează un coeficient de DILATAȚIE termică a returna sumele de vânzări de vânzări de personalul din 2018:
imaginea De mai jos prezinta setul de rezultate:
In acest exemplu:
- în Primul rând, am definit
cte_sales_amounts
ca numele de masa comună de exprimare., CTE se întoarce un rezultat care este format din trei coloanestaff
,year
șisales
derivate din definiția de interogare. - în al Doilea rând, ne-am construit o interogare care returnează suma vânzărilor totale de către personalul de vânzări și an de interogare a datelor din
orders
,order_items
șistaffs
tabele. - în al treilea rând, ne-am referit la CTE în interogarea exterioară și am selectat numai rândurile al căror an este 2018.,am menționat că acest exemplu este destinat exclusiv demonstrației pentru a vă ajuta să înțelegeți treptat cum funcționează expresiile comune ale tabelelor. Există o modalitate mai optimă de a obține rezultatul fără a utiliza CTE.
B) folosind o expresie comună a tabelului pentru a face medii de raport pe baza numărului
Acest exemplu utilizează CTE pentru a returna numărul mediu de comenzi de vânzări în 2018 pentru toate personalul de vânzări.
Aici este de ieșire:
Code language: SQL (Structured Query Language) (sql)În acest exemplu:
în Primul rând, am folosit
cte_sales
ca numele de masa comună de exprimare., Am omis lista de coloane a CTE, astfel încât este derivată din Declarația de definiție CTE. În acest exemplu, includestaff_id
șiorder_count
coloane.în al doilea rând, folosim următoarea interogare pentru a defini setul de rezultate care populează expresia comună a tabeluluicte_sales
. Interogarea returnează numărul de comenzi în 2018 de către personalul de vânzări.în al treilea rând, ne referim lacte_sales
în declarația exterioară și folosim funcțiaAVG()
pentru a obține comanda medie de vânzări de către toate personalul.,Code language: SQL (Structured Query Language) (sql)C) Folosind mai multe SQL Server CTE într-o singură interogare exemplu
următorul exemplu utilizează două CTE
cte_category_counts
șicte_category_sales
pentru a reveni la numărul de produse și de vânzări pentru fiecare categorie de produse. Interogarea exterioară unește două CTEs folosind coloanacategory_id
.,Aici este setul de rezultate:
În acest tutorial, ai învățat cum să utilizați masă comună expresii sau CTE în SQL Server pentru a construi interogări complexe într-un mod ușor de înțeles.