Selecionar registro e transformar em colunas no mysql

MySQL

26/09/2018

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
Wayder Loyola

Wayder Loyola

Curtidas 0

Melhor post

Ricardo Pestana

Ricardo Pestana

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
GOSTEI 1

Mais Respostas

Wayder Loyola

Wayder Loyola

26/09/2018

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

GOSTEI 0
Ricardo Pestana

Ricardo Pestana

26/09/2018

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;

GOSTEI 1
POSTAR