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.