Qual a função equivalente ao decode no MySQL

Preciso alterar uma linha de tabela em uma coluna de tabela no MySQL. Me parece que a função de code no PL/SQL faz isto, mas eu não estou conseguindo encontrar algo , de forma simples e objetiva, para o MySQL. Exemplo do que preciso:

Descrição valor mes
desc1 10 jan
desc1 23 fev
desc2 15 jan
desc2 35 fev

Preciso que fique assim:

Descrição jan fev
desc1 10 23
desc2 15 35

será group by descrição, mes

Desde já agradeço a ajuda !

Abs

Olá boa tarde.

Vamos aos pontos:

1 - Vc quer fazer uma alteração em uma coluna de uma certa linha na tabela, isso?
2 - A função DECODE, utilizado pela Oraccle, para mostrar um texto de acordo com o valor do campo passado.
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm
3 - Pelo seu exemplo vc quer montar um select onde os valores da coluna mês se tornem as colunas, isso mesmo?

[]'s

1 curtida

Ola Rafael.indiao, e extamente isto. com PL/SQL e mais fácil, mas com MySql não estou achando nada simples e efetivo.

Olá boa noite.

Acho que vc procura isso aqui:

SELECT DS_DESCRICAO
,MAX(IF(NM_MES = ‘JAN’, VL_VALOR, NULL)) JAN
,MAX(IF(NM_MES = ‘FEV’, VL_VALOR, NULL)) FEV
FROM VALOR_MES
GROUP BY DS_DESCRICAO

http://sqlfiddle.com/#!9/ec9599

Veja se é isso mesmo.

Só uma ressalva: isso que fiz não substitui o DECODE, pois o decode é para um registro e vc informar quais são os dados que irá aparecer no select de acordo com os dados do registro.

[]'s

1 curtida

Cara, ficou perfeito. Eu substitui o max por sum e um abraço.

Valeu demais. Um super muito obrigado ! :smile:

Olha como ficou com sua ajuda:

select descricao,
sum(if(mes = 1, debito, null)) jan,
sum(if(mes = 2, debito, null)) fev
from db2016
where debito > 0 and ano = 2016 and mes < 3
group by descricao;

Opa, que bom que ajudou :smiley:

Disponha da ajuda

[]'s

1 curtida