Resumen: En este tutorial, aprenderá sobre la expresión de tabla común o CTE en SQL Server utilizando la cláusula WITH
.
Introducción a CTE en SQL Server
CTE significa expresión de tabla común. Una CTE permite definir un nombre temporal conjunto de resultados disponibles de forma temporal en el ámbito de la ejecución de una instrucción como SELECT
, INSERT
, UPDATE
, DELETE
o MERGE
.,
lo siguiente muestra la sintaxis común de un CTE en SQL Server:
Code language: SQL (Structured Query Language) (sql)
en esta sintaxis:
- Primero, especifique el nombre de la expresión (
expression_name
) al que puede referirse más adelante en una consulta. - a continuación, especifique una lista de columnas separadas por comas después de expression_name. El número de columnas debe ser el mismo que el número de columnas definido en el
CTE_definition
. - Luego, use la palabra clave AS después del nombre de la expresión o la lista de columnas si se especifica la lista de columnas.,
- Después, defina una instrucción
SELECT
cuyo conjunto de resultados rellena la expresión de tabla común. - Finalmente, se refieren a la expresión de tabla común en una consulta (
SQL_statement
) comoSELECT
,INSERT
,UPDATE
,DELETE
oMERGE
.
preferimos usar expresiones de tabla comunes en lugar de usar subconsultas porque las expresiones de tabla comunes son más legibles., También utilizamos CTE en las consultas que contienen funciones analíticas (o funciones de ventana)
ejemplos de CTE de SQL Server
tomemos algunos ejemplos de uso de expresiones de tabla comunes.
a) ejemplo simple de CTE de SQL Server
Esta consulta utiliza un CTE para devolver las cantidades de ventas por personal de ventas en 2018:
la siguiente imagen muestra el conjunto de resultados:
en este ejemplo:
- Primero, definimos
cte_sales_amounts
como el nombre de la expresión de tabla común., el CTE devuelve un resultado que consta de tres columnasstaff
,year
ysales
deriva de la definición de la consulta. - En segundo lugar, construimos una consulta que devuelve el monto total de ventas por personal de ventas y Año consultando datos de las tablas
orders
,order_items
ystaffs
. - En tercer lugar, nos referimos al CTE en la consulta externa y seleccionamos solo las filas cuyo año es 2018.,
señaló que este ejemplo es únicamente para el propósito de demostración para ayudarlo a comprender gradualmente cómo funcionan las expresiones de tabla comunes. Hay una forma más óptima de lograr el resultado sin usar CTE.
B) Uso de una expresión de tabla común para hacer promedios de informes basados en recuentos
este ejemplo utiliza el CTE para devolver el número promedio de órdenes de venta en 2018 para todo el personal de ventas.
Aquí está la salida:
Code language: SQL (Structured Query Language) (sql)
en este ejemplo:
primero, usamos cte_sales
como el nombre de la expresión de tabla común., Nos saltamos la lista de columnas de la CTE por lo que se deriva de la declaración de definición de CTE. En este ejemplo, se incluye staff_id
y order_count
columnas.
en segundo lugar, utilizamos la siguiente consulta para definir el conjunto de resultados que rellena la expresión de tabla común cte_sales
. La consulta devuelve el número de pedidos en 2018 por personal de ventas.
En tercer lugar, nos referimos a la cte_sales
en la instrucción externa y utilizamos la función AVG()
para obtener la orden de venta promedio de todo el personal.,
Code language: SQL (Structured Query Language) (sql)
C) usando varios CTE de SQL Server en un solo ejemplo de consulta
el siguiente ejemplo utiliza dos CTE cte_category_counts
y cte_category_sales
para devolver el número de productos y ventas para cada categoría de producto. La consulta externa une dos Cte usando la columna category_id
.,
Aquí está el conjunto de resultados:
en este tutorial, ha aprendido a usar expresiones de tabla comunes o CTE en SQL Server para construir consultas complejas de una manera fácil de entender.