Selecionar registro e transformar em colunas no mysql
26/09/2018
0
Tenho a seguinte tabela: movimento (data, id_pagamento, valor)
01/01/1999 DINHEIRO 9,90
01/01/1999 DINHEIRO 10,50
01/01/1999 CARTAO 5,50
01/01/1999 DINHEIRO 7,50
gostaria de fazer um select que o resultado seja assim:
DATA, DINEHIRO, CARTAO
01/01/1999 27,90 5,50
01/01/1999 DINHEIRO 9,90
01/01/1999 DINHEIRO 10,50
01/01/1999 CARTAO 5,50
01/01/1999 DINHEIRO 7,50
gostaria de fazer um select que o resultado seja assim:
DATA, DINEHIRO, CARTAO
01/01/1999 27,90 5,50
Wayder Loyola
Curtir tópico
+ 0
Responder
Post mais votado
26/09/2018
Bom dia Wayder,
Tenta assim....
SELECT data,
SUM(IF (id_pagamento = 'DINHEIRO', VALOR, 0)) AS DINHEIRO,
SUM(IF (id_pagamento = 'CARTAO', VALOR, 0)) AS CARTAO
FROM movimento ;
abraço
Tenta assim....
SELECT data,
SUM(IF (id_pagamento = 'DINHEIRO', VALOR, 0)) AS DINHEIRO,
SUM(IF (id_pagamento = 'CARTAO', VALOR, 0)) AS CARTAO
FROM movimento ;
abraço
Ricardo Pestana
Responder
Mais Posts
26/09/2018
Wayder Loyola
Ricardo, bom dia!
Obrigado pela dica. Faltou um detalhe, tem uma outra tabela com as formas de pagamento.
Tabela: formapagto
ID DESCRICAO
1 Dinheiro
2 Cartão Crédito
3 Cartão Débito
Tabela movimento:
DATA ID_FORMAPAGTO VALOR
01/01/1999 1 9,90
01/01/1999 1 10,50
01/01/1999 2 5,50
01/01/1999 1 7,50
Resultado:
DATA, DINHEIRO, CARTAO_CREDITO
01/01/1999 27,90 5,50
Obrigado pela dica. Faltou um detalhe, tem uma outra tabela com as formas de pagamento.
Tabela: formapagto
ID DESCRICAO
1 Dinheiro
2 Cartão Crédito
3 Cartão Débito
Tabela movimento:
DATA ID_FORMAPAGTO VALOR
01/01/1999 1 9,90
01/01/1999 1 10,50
01/01/1999 2 5,50
01/01/1999 1 7,50
Resultado:
DATA, DINHEIRO, CARTAO_CREDITO
01/01/1999 27,90 5,50
Responder
26/09/2018
Ricardo Pestana
Wayder,
No "IF" vc vai ter que saber as formas de pagamento, mas como pelo que entendi vc não vai ter essa descrição na tabela de movimentos... então é só fazer um join conforme abaixo...
É isso que vc precisa ?
SELECT data,
SUM(IF (f.descricao = ''DINHEIRO'', VALOR, 0)) AS DINHEIRO,
SUM(IF (f.descricao = ''CARTAO'', VALOR, 0)) AS CARTAO
FROM testes.minhatabela t
inner join formapag f on f.id = t.idfpg;
No "IF" vc vai ter que saber as formas de pagamento, mas como pelo que entendi vc não vai ter essa descrição na tabela de movimentos... então é só fazer um join conforme abaixo...
É isso que vc precisa ?
SELECT data,
SUM(IF (f.descricao = ''DINHEIRO'', VALOR, 0)) AS DINHEIRO,
SUM(IF (f.descricao = ''CARTAO'', VALOR, 0)) AS CARTAO
FROM testes.minhatabela t
inner join formapag f on f.id = t.idfpg;
Responder
Clique aqui para fazer login e interagir na Comunidade :)