SQL Server Recursive CTE

SQL Server Recursive CTE
Expressões de tabela comuns, ou CTE para abreviar, são um recurso útil no SQL que permite definir um conjunto de resultados nomeado temporário que outra consulta pode usar.

Um CTE recursivo, na mão, é uma expressão de CTE que se refere -se. Um CTE recursivo funciona retornando um subconjunto e depois se refere -se até que retorne todos os resultados.

CTEs recursivos são úteis ao consultar conjuntos de dados aninhados/multiníveis ou hierárquicos. Por exemplo, se você possui um componente que contém outros dados e que os dados contêm outros dados aninhados, um CTE recursivo é uma boa maneira de consultar esses dados.

SQL Server Recursive CTE

A seguir, descreve a sintaxe para realizar um CTE recursivo:

Com expressão_name (column_list)
COMO
(
Initial_Query
Union All
Recursive_Query
)
Selecione *
De expressão_name

Exemplo - Exemplo básico de CTE recursivo

O exemplo a seguir mostra o uso básico do recurso CTE recursivo no SQL Server:

com CTE (n) como
(
Selecione
1
Union All
Selecione
n + 1
DE
cte
ONDE
n < 5
)
Selecione
*
DE
cte;

Saída:

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

Exemplo 2 - Usando CTE para calcular o dia da semana.

O exemplo a seguir mostra como usar o CTE recursivo para determinar o número de dias em uma semana.

Com cte_exec (n,
dia da semana)
COMO (
Selecione
0,
Datename (W, 0)
Union All
Selecione
n + 1,
Datename (w, n + 1)
DE
cte_exec
ONDE
n < 6
)
Selecione
dia da semana
DE
cte_exec;

A saída resultante é como mostrado:

Conclusão

Este é o básico de trabalhar com CTEs recursivos no SQL Server.