SQL Server recursivo CTE

SQL Server recursivo CTE
Las expresiones de tabla comunes, o CTE para abreviar, son una característica útil en SQL que le permite definir un conjunto de resultados con nombre temporal que otra consulta puede usar.

Un CTE recursivo, en la mano, es una expresión de CTE que se hace referencia a sí misma. Un CTE recursivo funciona devolviendo un subconjunto y luego se hace referencia a sí mismo hasta que devuelva todos los resultados.

Los CTE recursivos son útiles al consultar conjuntos de datos anidados/de niveles múltiples o jerárquicos. Por ejemplo, si tiene un componente que contiene otros datos y que los datos contienen otros datos anidados, un CTE recursivo es una buena manera de consultar dichos datos.

SQL Server recursivo CTE

La siguiente muestra la sintaxis para realizar un CTE recursivo:

Con Expression_Name (column_list)
COMO
(
inicial_query
Unión todos
recursivo_query
)
SELECCIONAR *
De expresión_name

Ejemplo - Ejemplo de CTE recursivo básico

El siguiente ejemplo muestra el uso básico de la función CTE recursiva en SQL Server:

con cte (n) como
(
SELECCIONAR
1
Unión todos
SELECCIONAR
N + 1
DE
cte
DÓNDE
norte < 5
)
SELECCIONAR
*
DE
cte;

Producción:

n |
-+
1 |
2 |
3 |
4 |
5 |

Ejemplo 2 - Uso de CTE para calcular el día de la semana.

El siguiente ejemplo muestra cómo usar CTE recursivo para determinar el número de días en una semana.

Con cte_exec (n,
día de la semana)
COMO (
SELECCIONAR
0,
Datename (w, 0)
Unión todos
SELECCIONAR
N + 1,
Datename (w, n + 1)
DE
CTE_EXEC
DÓNDE
norte < 6
)
SELECCIONAR
día de la semana
DE
cte_exec;

La salida resultante es como se muestra:

Conclusión

Estos son los conceptos básicos de trabajar con CTE recursivos en SQL Server.