SQL Server
CTE en SQL Server (Common Table Expressions) explicado fácil con ejemplos reales y ejercicios
Publicado por J. Panduro hace 4 meses
A medida que tus consultas SQL crecen, empiezan a volverse difíciles de leer y mantener. Aquí es donde las CTE(Common Table Expressions) se convierten en una herramienta muy poderosa en SQL Server.
Las CTE permiten:
- Escribir consultas más limpias
- Organizar lógica compleja
- Reemplazar subconsultas difíciles
- Mejorar legibilidad
En este artículo aprenderás:
- Qué es una CTE
- Cómo funciona
- Diferencia entre CTE y subquery
- Casos reales empresariales
- Ejercicios tipo entrevista
¿Qué es una CTE?
Una CTE (Common Table Expression) es una consulta temporal con nombre que existe únicamente durante la ejecución de una consulta SQL. Su principal objetivo es mejorar la legibilidad y organización del código, permitiendo dividir consultas complejas en partes más fáciles de entender y mantener.
Una CTE se define utilizando la palabra clave WITH y funciona de manera similar a una tabla temporal o una vista, con la diferencia de que solo existe mientras se ejecuta la consulta que la utiliza. Una vez finalizada la ejecución, la CTE desaparece automáticamente y no ocupa espacio permanente en la base de datos.
Gracias a las CTEs, es posible estructurar consultas complejas de forma más clara, evitando subconsultas anidadas difíciles de leer. Esto resulta especialmente útil cuando se trabaja con grandes volúmenes de datos o cuando una consulta requiere múltiples etapas de procesamiento.
Ejemplo
¿Por qué usar CTE?
Las CTE ayudan a:
- Dividir consultas complejas
- Hacer código más entendible
- Evitar subconsultas repetidas
Dataset completo (copiar y ejecutar)
Primera CTE básica
Obtener clientes que gastaron más de 1000.
¿Cómo funciona?
Paso 1
La CTE genera temporalmente:
Paso 2
Luego la consulta principal usa esa “tabla temporal”.
Diferencia entre CTE y Subquery
Tanto las CTE (Common Table Expressions) como las Subqueries (Subconsultas) permiten utilizar el resultado de una consulta dentro de otra consulta. Sin embargo, existen diferencias importantes en cuanto a legibilidad, mantenimiento y casos de uso.
Una Subquery es una consulta que se encuentra dentro de otra consulta SQL. Generalmente se utiliza para obtener datos que serán empleados por la consulta principal. Aunque son muy útiles, cuando una consulta contiene varias subconsultas anidadas puede volverse difícil de leer y mantener.
Por otro lado, una CTE permite asignar un nombre a una consulta temporal antes de ejecutar la consulta principal. Esto hace que el código sea más organizado y fácil de entender, especialmente en consultas complejas.
Subquery
CTE
¿Cuál es mejor?
La CTE suele ser:
- Más limpia
- Más legible
- Más fácil de mantener
Caso real empresarial
Obtener categorías con ventas superiores al promedio.
CTE con múltiples cálculos
CTE recursiva (nivel más avanzado)
Además de simplificar consultas complejas, las CTE (Common Table Expressions) también pueden utilizarse de forma recursiva. Una CTE recursiva es aquella que se referencia a sí misma para recorrer estructuras jerárquicas o relaciones entre registros, permitiendo procesar datos organizados en varios niveles.
Este tipo de consultas resulta especialmente útil cuando la información tiene una estructura de árbol, donde un registro puede depender de otro registro padre. En lugar de realizar múltiples consultas manuales para recorrer cada nivel, una CTE recursiva permite obtener toda la jerarquía mediante una única consulta.
- Las CTE recursivas son ampliamente utilizadas en sistemas empresariales para representar relaciones jerárquicas y estructuras organizacionales complejas. Gracias a ellas es posible navegar fácilmente entre distintos niveles de información sin necesidad de escribir consultas repetitivas.
Ejemplo simple
Ejercicios tipo entrevista
Nivel básico
Obtener clientes que gastaron más de 1000 usando CTE.
Nivel intermedio
Mostrar:
- Cliente
- Cantidad de compras
- Total gastado
Nivel entrevista real
Obtener categorías cuyo total vendido esté por encima del promedio general.
Conclusión
Las CTE (Common Table Expressions) son una herramienta poderosa de SQL Server que permite escribir consultas más claras, organizadas y fáciles de mantener. Aunque a simple vista pueden parecer similares a las subconsultas, ofrecen una estructura más legible que facilita el desarrollo y la comprensión de consultas complejas.
A lo largo de este artículo hemos visto cómo las CTE ayudan a dividir problemas complejos en partes más sencillas, permitiendo trabajar con conjuntos de datos de forma más ordenada. También aprendimos que pueden utilizarse para realizar cálculos intermedios, generar rankings, simplificar consultas extensas y construir soluciones más profesionales dentro de bases de datos empresariales.
Además, las CTE recursivas amplían aún más sus capacidades al permitir trabajar con estructuras jerárquicas como organigramas, categorías de productos, árboles de directorios y relaciones entre registros. Gracias a esta funcionalidad, es posible resolver problemas que de otra manera requerirían múltiples consultas o lógica adicional en la aplicación.
En entornos profesionales, las CTE son ampliamente utilizadas en sistemas ERP, aplicaciones web, plataformas de comercio electrónico, sistemas de gestión empresarial, dashboards y soluciones de análisis de datos. Su capacidad para mejorar la legibilidad y el mantenimiento del código las convierte en una herramienta indispensable para desarrolladores y administradores de bases de datos.
Sobre el autor
J. Panduro es desarrollador de software y creador de HPanduDigital. Comparte contenido sobre Desarrollo Web, inteligencia artificial, y transformación digital, basado en experiencias reales y proyectos prácticos.