La cláusula WITH en SQL es una cláusula que se utiliza para definir un conjunto temporal de resultados que se pueden utilizar en una consulta. Estos conjuntos temporales se conocen como subconsultas o common table expressions (CTEs, por sus siglas en inglés). Las CTEs son útiles para simplificar consultas complejas y mejorar su legibilidad.
La sintaxis de la cláusula WITH en SQL es la siguiente,
WITH common_table_expression_name [(column_name [, ... ]) [AS] (query_expression)]
Donde
- common_table_expression_name es el nombre de la CTE.
- column_name es el nombre de una columna de la CTE.
- query_expression es una consulta que define los datos de la CTE.
La cláusula WITH se utiliza para definir una o más CTEs que se pueden utilizar en una consulta. Cada CTE se define mediante un nombre, una lista opcional de columnas y una consulta que define los datos de la CTE.
Por ejemplo, supongamos que tenemos una tabla «empleados» que contiene información sobre los empleados de una empresa, y queremos obtener el nombre y el salario de todos los empleados que ganan más de €50,000.
Podemos utilizar una CTE para obtener esta información de manera más sencilla,
WITH empleados_altosalario AS (
SELECT nombre, salario
FROM empleados
WHERE salario > 50000)
SELECT * FROM empleados_altosalario;
En este ejemplo, se está utilizando la cláusula WITH para definir una CTE llamada «empleados_altosalario» que contiene el nombre y el salario de todos los empleados que ganan más de €50,000. Luego, se utiliza la CTE en la consulta SELECT para obtener todos los empleados con un salario alto.