CTE’S NO RECURSIVO EN SQL PARA PRINCIPIANTES

En este pequeño tutorial crearemos un CTE (Common Table Expressions) en SQL paso a paso.

CTE al español significa expresión de la tabla común donde los resultados del conjunto son temporales donde se puede hacer la referencia el ABC como son SELECT, UPDATE, DELETE, INSERT o también puede crear una vista dentro del CTE.

Una de las ventajas del CTE es que es una sentencia que puede ser no recursiva o recursiva lo cual muchas veces nos ayuda mucho al tratar con ciertos registros.

Estructura.

El CTE se define con una clausula WITH Antes de la consulta principal ya sea un SELECT o INSERT por ejemplo. La cláusula WITH puede incluir uno o más CTE’S

WITH <Common_Table_Expression>

<common_Table_Expression>

Cte_name [ (Column_name [….])]

AS(cte_query)

 

Creación de CTE no recursivo.

Esto se refiere que no hace referencia a si misma dentro del CTE.

Para nuestro ejemplo usaremos la base de datos de NORTHWIND Orders.

 

Y de empleados esto es para saber cuánta es la carga que tiene el empleado de sus productos para eso se crea la siguiente sentencia.

 

 

Donde en esta sección

WITH


cteCargaTotales
(OrderId,empleado,peso)


AS


(


SELECT
OrderID
,
EmployeeID,
ROUND(SUM(Freight), 2)


FROM
Orders


GROUP
BY
OrderID,EmployeeID


)

 

Definimos la sentencia WITH y en seguida el nombre que tendrá nuestro CTE y las columnas que tendrá. En la parte de abajo se crea la sentencia de select con el total de la carga.

En esta sección

SELECT


sp.FirstName +
‘ ‘
+ sp.LastName
AS
FullName,


sp.City
AS
Location,


ts.peso

FROM
Employees
AS
sp


INNER
JOIN
cteCargaTotales
AS
ts


ON
sp.EmployeeID = ts.empleado

ORDER
BY
ts.peso
DESC

 

Se realiza un SELECT de todos los empleados donde tenemos su nombre la ciudad que reside y a continuación se realiza un INNER JOIN Con la parte de arriba que definimos como cteCargaTotales y se muestra la columna de peso.

 

Aquí el resultado final.

Como podemos ver esto es una forma sencilla de realizar un CTE no recursivo.

 

 

 

Happy coding ;=)

Share: