Riepilogo: in questo tutorial, imparerai a conoscere l’espressione common table o CTE in SQL Server utilizzando la clausolaWITH
.
Introduzione a CTE in SQL Server
CTE sta per common table expression. Una CTE consente di definire un set di risultati denominato temporaneo che a disposizione temporaneamente nell’ambito di esecuzione di un’istruzione, ad esempio SELECT
INSERT
UPDATE
DELETE
o MERGE
.,
Quanto segue mostra la sintassi comune di un CTE in SQL Server:
Code language: SQL (Structured Query Language) (sql)
In questa sintassi:
- In primo luogo, specificare il nome dell’espressione (
expression_name
) a cui è possibile fare riferimento in seguito in una query. - Quindi, specificare un elenco di colonne separate da virgole dopo il nome_espressione. Il numero di colonne deve essere uguale al numero di colonne definito in
CTE_definition
. - Quindi, utilizzare la parola chiave AS dopo il nome dell’espressione o l’elenco delle colonne se è specificato l’elenco delle colonne.,
- Dopo, definire un’istruzione
SELECT
il cui set di risultati popola l’espressione di tabella comune. - Infine, vedere l’espressione di tabella comune in una query (
SQL_statement
) comeSELECT
INSERT
UPDATE
DELETE
oMERGE
.
Preferiamo usare espressioni di tabella comuni piuttosto che usare sottoquery perché le espressioni di tabella comuni sono più leggibili., Usiamo anche CTE nelle query che contengono funzioni analitiche (o funzioni finestra)
SQL Server CTE esempi
Prendiamo alcuni esempi di utilizzo di espressioni di tabella comuni.
A) Semplice SQL Server CTE esempio
Questa query che utilizza una CTE per restituire gli importi di vendita da parte di personale di vendita, nel 2018:
L’immagine seguente mostra il risultato set:
In questo esempio:
- in Primo luogo, abbiamo definito
cte_sales_amounts
come il nome di espressione di tabella comune., il CTE restituisce un risultato costituito da tre colonnestaff
,year
esales
derivate dalla query di definizione. - In secondo luogo, abbiamo costruito una query che restituisce l’importo totale delle vendite per personale di vendita e anno interrogando i dati dalle tabelle
orders
,order_items
estaffs
. - In terzo luogo, abbiamo fatto riferimento al CTE nella query esterna e selezioniamo solo le righe il cui anno è 2018.,
Ha notato che questo esempio è esclusivamente a scopo dimostrativo per aiutarti a capire gradualmente come funzionano le espressioni di tabella comuni. C’è un modo più ottimale per ottenere il risultato senza usare CTE.
B) Utilizzo di un’espressione di tabella comune per creare medie di report in base ai conteggi
Questo esempio utilizza il CTE per restituire il numero medio di ordini di vendita nel 2018 per tutto il personale di vendita.
Ecco l’output:
Code language: SQL (Structured Query Language) (sql)
In questo esempio:
Per prima cosa, abbiamo usato cte_sales
come nome dell’espressione comune della tabella., Abbiamo saltato l’elenco delle colonne del CTE in modo che sia derivato dall’istruzione CTE definition. In questo esempio, include le colonnestaff_id
eorder_count
.
In secondo luogo, usiamo la seguente query per definire il set di risultati che popola l’espressione di tabella comunecte_sales
. La query restituisce il numero di ordini nel 2018 da parte del personale di vendita.
In terzo luogo, ci riferiamo al cte_sales
nella dichiarazione esterno e utilizzare il AVG()
funzione per ottenere l’ordine medio di vendita da parte di tutto il personale.,
Code language: SQL (Structured Query Language) (sql)
C) Utilizzo di più CTE SQL Server in una singola query esempio
Il seguente esempio utilizza due CTE cte_category_counts
e cte_category_sales
per restituire il numero dei prodotti e delle vendite per ciascuna categoria di prodotto. La query esterna unisce due CTES utilizzando la colonnacategory_id
.,
Ecco il set di risultati:
In questo tutorial, hai imparato come usare espressioni di tabella comuni o CTE in SQL Server per costruire query complesse in un facile da capire il modo.