Case e concatenação no SQL - Ajuste de ordem ou posição na tabela

Publicado por Diego em 16/11/2015

[ Hits: 3.029 ]

Blog: http://www.vivaolinux.com.br/~usrlinux

 


Case e concatenação no SQL - Ajuste de ordem ou posição na tabela



Recentemente verifiquei numa base de dados que o código dos lançamentos iniciava-se em 2 ao invés de 1.

O código para ajuste poderia ser feito de outra maneira, inclusive as condições poderiam estar na cláusula WHERE, entretanto, resolvi fazer utilizando o comando CASE e utilizando CONCATENAÇÃO.

O comando CASE permite que as condições sejam testadas no momento da seleção dos dados.

No exemplo abaixo estou pedindo para selecionar todos os códigos da tabela LANCTO, na sequência é verificado todos os códigos maiores ou igual a 2 e decrementado -1 (menos um), a concatenação é realizada através do operador || (duplo pipe):

select distinct(codigo), case when codigo >=2 then 'update lancto set codigo = '|| sum(codigo-1) ||' where codigo = '|| codigo end "Código gerado para ajuste"
from LANCTO
group by 1

Obrigatoriamente o comando CASE deve ser finalizando com o comando END, após o comando pode ser descrito o nome da coluna para exibição dos resultados.

Lembrando que deve estar entre aspas duplas, no exemplo acima nomeei a coluna como "Código gerado para ajuste".

Para cada cláusula WHEN pode ser utilizado o comando ELSE (opcional) para testar condições específicas para cada situação.

Outras dicas deste autor

Firebird - Como localizar GENERATORS de uma tabela

Livro gratuito - Linux comandos básicos e avançados

Verificando CPF com PHP

Universidade Linux - Dicas sobre Linux

Interface gráfica para configuração do SAMBA

Leitura recomendada

Melhor escolha, melhor performance (banco de dados)

Contador de linhas em consultas SQL

Editora Pearson lança este mês Ajax em ação

SQL: UNION ALL vs UNION e ordenação

Instalação do MSSQL-Server no CentOS 7

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts