Welcome to Our Website

SQL Server CTE (Italiano)

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’istruzioneSELECT il cui set di risultati popola l’espressione di tabella comune.
  • Infine, vedere l’espressione di tabella comune in una query (SQL_statement) come SELECT INSERT UPDATE DELETE o MERGE.

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 colonne staff, year e sales 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 e staffs.
  • 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_countse 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *