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 !
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;