Usuário com melhor resposta
Consulta Recursiva

Pergunta
-
Olá,
Preciso fazer uma consulta recursiva para rastreabilidade de passagens de valores.
Porém, eu preciso que ele exiba os números sucessores e antecessores.
Exemplo, ao filtrar número 1245, precisa exibir:
1214,1215,1216,1222,1298
Exemplo estrutura tabela
Alguém poderia me ajudar?
Grato,
Felipe
Respostas
-
Bom dia,
Não sei se entendi errado mas olhando o exemplo que você postou me pareceu que a sequencia foi quebrada entre a segunda e a terceira linha.
De qualquer forma, experimente fazer uns testes mais ou menos dessa forma:
with CTE_Ant as ( select Origem as Codigo, -1 as Nivel from Tabela where Destino = 1245 union all select t.Origem, a.Nivel - 1 from CTE_Ant as a inner join Tabela as t on t.Destino = a.Codigo ), CTE_Suc as ( select Destino as Codigo, 1 as Nivel from Tabela where Origem = 1245 union all select t.Destino, s.Nivel + 1 from CTE_Suc as s inner join Tabela as t on t.Origem = s.Codigo ) select * from CTE_Ant union all select * from CTE_Suc order by Nivel
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta felipe_louzada terça-feira, 21 de julho de 2020 16:55
Todas as Respostas
-
Bom dia,
Não sei se entendi errado mas olhando o exemplo que você postou me pareceu que a sequencia foi quebrada entre a segunda e a terceira linha.
De qualquer forma, experimente fazer uns testes mais ou menos dessa forma:
with CTE_Ant as ( select Origem as Codigo, -1 as Nivel from Tabela where Destino = 1245 union all select t.Origem, a.Nivel - 1 from CTE_Ant as a inner join Tabela as t on t.Destino = a.Codigo ), CTE_Suc as ( select Destino as Codigo, 1 as Nivel from Tabela where Origem = 1245 union all select t.Destino, s.Nivel + 1 from CTE_Suc as s inner join Tabela as t on t.Origem = s.Codigo ) select * from CTE_Ant union all select * from CTE_Suc order by Nivel
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta felipe_louzada terça-feira, 21 de julho de 2020 16:55
-