Preciso gerar números inteiros crescentes e decrescentes monotonicamente de um determinado intervalo, por exemplo (10) em uma coluna de uma tabela.
A saída desejada de cima para baixo deve ser semelhante a:
1,2,3,4,5,6,7,8,9,10,10,9,8,7,6,5,4,3,2,1,1,2,3,4,5,6,7,8,9,10,...
Talvez usando a função generate_series(1,100)
ou similar?
Várias abordagens para responder a esta questão (interessante) foram discutidas aqui . Você pode estar interessado em explorar essas respostas para obter uma melhor compreensão do tópico (e do PostgreSQL em geral).
Também houve discussão sobre o uso de uma
param
tabela (como CTE) para os números iniciais e finais da sua série (ou seja, (3, 5) dará 3, 4, 5, 5, 4, 3,...).A melhor abordagem foi dada como ( fiddle ):
Um pouco indireto em comparação com a solução do @ErwinBrandstetter, mas vale a pena dar uma olhada, mesmo que apenas pela experiência de aprendizado?
violino
Produz o resultado desejado.