Usuário com melhor resposta
Dificuldade Em Um Select

Pergunta
-
Olá amigos! estou com a seguinte dificuldade em um select: tenho a tabela abaixo:Tabela:cartao_consumo_historico_saldoid_checkin Forma_Pagamento Descricao credito debito235 Dinheiro CHECKIN 150.00 10.00235 Dinheiro CONSUMACAO 0.00 20.00235 Cartao Recarga 60.00 0.00235 Cartao CONSUMACAO 0.00 2.00Eu Gostaria de fazer um select, cujo resultado ficasse da seguinte forma:Forma_Pagamento totalcreditado DebitoDinheiro 150.00 10.00Cartao 60.00 0.00ou seja, somasse o total creditado por forma de pagamento, e mostrasse o debito da forma de pagamento quando a descrição for "CHECKIN"eu usei o seguinte select:selecthist.forma_pagamento,sum(credito) as totalcreditado,(select debito from cartao_consumo_historico_saldo where id_checkin = 235 and Descricao = 'CHECKIN')fromcartao_consumo_historico_saldo histwherehist.id_checkin = 235group byhist.Forma_pagamentoO Resultado que eu esperava era o seguinte:Forma_Pagamento totalcreditado DebitoDinheiro 150.00 10.00Cartao 60.00 0.00Porem o Resultado foi o seguinte:Forma_Pagamento totalcreditado DebitoDinheiro 150.00 10.00Cartao 60.00 10.00ou seja, ele colocou 10,00 de debito pro cartao, quando na verdade nao tem!Alguém pode me ajudar? onde estou errando?
Respostas
-
Pelo que vi, acho que teria que trocar o trecho que sugeri em todas as partes da sua query.
Experimente dessa forma:
with CTE_Agrupa as ( select forma_pagamento, sum(credito) as totalcreditado, sum(debito) as debito, sum(case when Descricao = 'CHECKIN' then debito else 0 end) as caucao from cartao_consumo_historico_saldo where id_checkin = 235 group by Forma_pagamento ) select Forma_Pagamento, totalcreditado, caucao, totalcreditado - caucao as saldocreditado, debito - caucao as totalconsumido, totalcreditado - debito as saldo, totalcreditado - debito + caucao as devolucao from CTE_Agrupa
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Marcos SJ terça-feira, 15 de dezembro de 2015 11:52
Todas as Respostas
-
Bom dia,
Experimente dessa forma:
select forma_pagamento, sum(credito) as totalcreditado, sum(case when Descricao = 'CHECKIN' then debito else 0 end) as totaldebito from cartao_consumo_historico_saldo where id_checkin = 235 group by Forma_pagamento
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
-
-
Pelo que vi, acho que teria que trocar o trecho que sugeri em todas as partes da sua query.
Experimente dessa forma:
with CTE_Agrupa as ( select forma_pagamento, sum(credito) as totalcreditado, sum(debito) as debito, sum(case when Descricao = 'CHECKIN' then debito else 0 end) as caucao from cartao_consumo_historico_saldo where id_checkin = 235 group by Forma_pagamento ) select Forma_Pagamento, totalcreditado, caucao, totalcreditado - caucao as saldocreditado, debito - caucao as totalconsumido, totalcreditado - debito as saldo, totalcreditado - debito + caucao as devolucao from CTE_Agrupa
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Marcos SJ terça-feira, 15 de dezembro de 2015 11:52
-