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

Publicado por Diego em 16/11/2015

[ Hits: 3.662 ]

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

Conhecendo melhor o PHP

Verificando CPF com PHP

Curso gratuito de JAVA

Instalando TeamViewer no Ubuntu multiarch

Leitura recomendada

Contador de linhas em consultas SQL

Lazarus: Banco nativo usando sdfdataset com formato CSV

Exportar banco de dados SQLite para arquivo .sql

Instalação do MSSQL-Server no CentOS 7

Fazendo backup no OpenLDAP

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário