Con la nuova versione di SQL Server sono state introdotte le Common Table Expressions (CTE). Tramite questa feature si possono creare dinamicamente in memoria delle "view" su cui si possono poi effettuare delle query.
Ecco un esempio:
WITH cte(managerid, employeeid) AS
(
SELECT managerid, employeeid
FROM humanresources.employee
)
SELECT * FROM cte
Benché inutile, l'esempio da l'idea di come si possa sfruttare questo meccanismo per risolvere situazioni complesse. Si crea una View temporanea chiamata "cte" che contiene i risultati della query inclusa tra parentesi e poi la si interroga con lo statement successivo al blocco "WITH".
Una delle caratteristiche più utili delle CTE è quella di poterle utilizzare per creare delle query ricorsive, come in questo esempio:
WITH cte(managerid, employeeid) AS
(
SELECT managerid, employeeid
FROM humanresources.employee
WHERE managerid IS NULL
UNION ALL
SELECT e.managerid, e.employeeid
FROM humanresources.employee e
JOIN cte d ON e.managerid = d.employeeid
)
SELECT * FROM cte
Nella prima query della CTE si esegue una select. Il risultato di questa viene utilizzato come View in join nella seconda select generando così la ricorsione.
Queste query sono basate sul database AdventureWorks.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Creare agenti facilmente con Azure AI Agent Service
- Loggare le query più lente con Entity Framework
- Disabilitare le run concorrenti di una pipeline di Azure DevOps
- Rendere i propri workflow e le GitHub Action utilizzate più sicure
- Gestione degli eventi nei Web component HTML
- Fornire parametri ad un Web component HTML
- Utilizzare Hybrid Cache in .NET 9