Common Table Expressions
Esta es una
característica de SQL Server se vio por primera vez en la versión 2005 y debo
confesar que no es de mis favoritas, su ventaja principal es ofrecer mayor
legibilidad a las consulta y por supuesto una facilidad en el mantenimiento de
las mismas. .
característica de SQL Server se vio por primera vez en la versión 2005 y debo
confesar que no es de mis favoritas, 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 .
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:


Que diferencias existe con las tablas temporales (#Tabla), yo hace años que utilizo esas tablas para procesos complejos o con mucha información para generar tablas agrupadas y sumarizadas.
En mi punto de vista es mas eficiente las tablas temporales que usas, las common table expressions son para correr querys en memoria y poder asignarles un nombre dentro del query pero no quedan almacenados en ninguna parte por un determinado tiempo como las tablas temporales.