Esta es una
característica de SQL Server se vio por primera vez en la versión 2005 y debo
confesar que no fue de mis favoritas hasta que encontré su potencial al momento en que ella se llama así misma (anidamiento), su ventaja principal es ofrecer mayor
legibilidad a las consulta y por supuesto una facilidad en el mantenimiento de
las mismas. .
CTE me permite cargar
a memoria una consulta o query, darle un nombre para utilizarlo inmediatamente
dentro del mismo bach de instrucciones, no queda almacenado como lo hace una
vista, función o procedimiento almacenado, es solo de uso temporal, dentro del
bach (conjunto) de instrucciones SQL .
Ejemplo:
---CTE Common Table Expression
WITH CTE_ORDENES as ( Select c.companyname, o.orderid,
o.orderdate, year(o.orderdate) as año,
month(o.orderdate) as mes
from customers c inner join orders o
on c.CustomerID=o.CustomerID)
|
CREACIÓN DEL CTE
|
Select companyname, orderid from CTE_ORDENES
where año=1997 and mes=6
go
|
USO
DEL CTE
|
Explicación: