none
Dificuldade Em Um Select RRS feed

  • Pergunta

  • Olá amigos! estou com a seguinte dificuldade em um select: tenho a tabela abaixo:
      
                  Tabela:cartao_consumo_historico_saldo
     
    id_checkin   Forma_Pagamento     Descricao              credito      debito
     235                    Dinheiro               CHECKIN               150.00     10.00
     235                    Dinheiro               CONSUMACAO      0.00        20.00
     235                    Cartao                  Recarga                 60.00       0.00
     235                    Cartao                  CONSUMACAO      0.00        2.00 
     
    Eu Gostaria de fazer um select, cujo resultado ficasse da seguinte forma:
     
    Forma_Pagamento  totalcreditado    Debito
    Dinheiro                      150.00            10.00
    Cartao                          60.00              0.00
     
    ou 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:
     
    select
    hist.forma_pagamento,
    sum(credito) as totalcreditado,
    (select debito from cartao_consumo_historico_saldo where id_checkin = 235 and  Descricao = 'CHECKIN')
    from 
    cartao_consumo_historico_saldo hist
    where
    hist.id_checkin = 235
    group by 
    hist.Forma_pagamento
     
    O Resultado que eu esperava era o seguinte:
    Forma_Pagamento  totalcreditado    Debito
    Dinheiro                     150.00             10.00
    Cartao                         60.00              0.00
     
    Porem o Resultado foi o seguinte:
    Forma_Pagamento  totalcreditado    Debito
    Dinheiro                       150.00          10.00
    Cartao                           60.00          10.00
     
     
    ou seja, ele colocou 10,00 de debito pro cartao, quando na verdade nao tem!
     
    Alguém pode me ajudar? onde estou errando?
    segunda-feira, 14 de dezembro de 2015 14:07

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
    segunda-feira, 14 de dezembro de 2015 16:43

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

    segunda-feira, 14 de dezembro de 2015 14:21
  • Funcionou e Não Funcionou ao Mesmo Tempo! 

    veja no print que ele altera os resultados, quando eu mexo nas informações

    segunda-feira, 14 de dezembro de 2015 15:08
  • 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
    segunda-feira, 14 de dezembro de 2015 16:43
  • Uruuuuuuu!!!!

    Nossa Mano..Deu Certo!!!

    Muito Obrigado Pela Ajuda!!!!!! Você é o Cara!

    segunda-feira, 14 de dezembro de 2015 17:57