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

Wayder Loyola

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

Ricardo Pestana

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

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;

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar