AJUDA COM CONSULTA SQL, SUM E UNION
Olá pessoal tudo bem?
Estou com problemas nessa consulta, preciso somar os dois valores de tipo de pagamento de ambas as tabelas.
Banco de dados Firebird 2.5.
Nessa consulta eu tenho a soma de forma de pagamento das respectivas tabelas, porém gostaria de saber se é possível somar os valores em uma única coluna.
Essa consulta me retorna exemplo.
TOTAL | TIPO
750,00 01
4100 01
Onde o 01 representa o código da forma de pagamento (Dinheiro), gostaria de somar esse dois valores.
Estou com problemas nessa consulta, preciso somar os dois valores de tipo de pagamento de ambas as tabelas.
Banco de dados Firebird 2.5.
Nessa consulta eu tenho a soma de forma de pagamento das respectivas tabelas, porém gostaria de saber se é possível somar os valores em uma única coluna.
Essa consulta me retorna exemplo.
TOTAL | TIPO
750,00 01
4100 01
Onde o 01 representa o código da forma de pagamento (Dinheiro), gostaria de somar esse dois valores.
select sum(PV.total_cupom)as total, pv.tp_pgto as tipo from trans_PV PV where PV.data between :datai and :dataf and PV.id_empresa=:empresa and PV.sequencia > 705000 and PV.sequencia < 706000 and PV.condicao <> "C" and pv.tp_pgto <> " " group by tipo UNION select sum(C.total_cupom)as total, C.tp_pgto as tipo from TRANS_CF C where C.data between :datai and :dataf and C.id_empresa=:empresa and C.sequencia > 705000 and C.sequencia < 706000 and C.condicao <> "C" and C.tp_pgto <> '' " group by tipo
Bruno Divino
Curtidas 0
Melhor post
Emerson Nascimento
03/03/2020
saiu um código duplicado na instrução. o correto é:
select tipo, sum(subtotal) total from ( select sum(PV.total_cupom) as subtotal, pv.tp_pgto as tipo from trans_PV PV where PV.data between :datai and :dataf and PV.id_empresa=:empresa and PV.sequencia > 705000 and PV.sequencia < 706000 and PV.condicao <> "C" and pv.tp_pgto <> " " group by tipo UNION select sum(C.total_cupom) as subtotal, C.tp_pgto as tipo from TRANS_CF C where C.data between :datai and :dataf and C.id_empresa=:empresa and C.sequencia > 705000 and C.sequencia < 706000 and C.condicao <> "C" and C.tp_pgto <> '' " group by tipo ) juncao group by tipo
GOSTEI 1
Mais Respostas
Emerson Nascimento
02/03/2020
tente algo assim:
select tipo, sum(subtotal) total from ( select sum(PV.total_cupom) as subtotal, pv.tp_pgto as tipo from trans_PV PV where PV.data between :datai and :dataf and PV.id_empresa=:empresa and PV.sequencia > 705000 and PV.sequencia < 706000 and PV.condicao <> "C" and pv.tp_pgto <> " " group by tipo UNION select sum(C.total_cupom) as subtotal, C.tp_pgto as tipo from TRANS_CF C where C.data between :datai and :dataf and C.id_empresa=:empresa and C.sequencia > 705000 and C.sequencia < 706000 and C.condicao <> "C" and C.tp_pgto <> '' " group by tipo ) juncao group by tipo ) juncao group by tipo
GOSTEI 0
Bruno Divino
02/03/2020
tente algo assim:
select tipo, sum(subtotal) total from ( select sum(PV.total_cupom) as subtotal, pv.tp_pgto as tipo from trans_PV PV where PV.data between :datai and :dataf and PV.id_empresa=:empresa and PV.sequencia > 705000 and PV.sequencia < 706000 and PV.condicao <> "C" and pv.tp_pgto <> " " group by tipo UNION select sum(C.total_cupom) as subtotal, C.tp_pgto as tipo from TRANS_CF C where C.data between :datai and :dataf and C.id_empresa=:empresa and C.sequencia > 705000 and C.sequencia < 706000 and C.condicao <> "C" and C.tp_pgto <> '' " group by tipo ) juncao group by tipo ) juncao group by tipo
Emerson obrigado por responde, porém eu estou com uma dúvida, isso é um subselect correto.
O primeiro select
Tipo, sum(subtotal) as total
Eu coloquei um as Total, acho que ficou faltando certo?
Também seguindo sua lógia coloquei um " ( " logo após o primeiro select, para fechar com o último do group by, é isso mesmo né?
Já na parte onde você digitou junção, devo fazer um join certo?
GOSTEI 0
Bruno Divino
02/03/2020
saiu um código duplicado na instrução. o correto é:
select tipo, sum(subtotal) total from ( select sum(PV.total_cupom) as subtotal, pv.tp_pgto as tipo from trans_PV PV where PV.data between :datai and :dataf and PV.id_empresa=:empresa and PV.sequencia > 705000 and PV.sequencia < 706000 and PV.condicao <> "C" and pv.tp_pgto <> " " group by tipo UNION select sum(C.total_cupom) as subtotal, C.tp_pgto as tipo from TRANS_CF C where C.data between :datai and :dataf and C.id_empresa=:empresa and C.sequencia > 705000 and C.sequencia < 706000 and C.condicao <> "C" and C.tp_pgto <> '' " group by tipo ) juncao group by tipo
Emerson, deu certo, muito obrigado!
Vou estudar melhor esse conceito de subselect!
Show de bola, resolvido.
GOSTEI 0
Bruno Divino
02/03/2020
saiu um código duplicado na instrução. o correto é:
select tipo, sum(subtotal) total from ( select sum(PV.total_cupom) as subtotal, pv.tp_pgto as tipo from trans_PV PV where PV.data between :datai and :dataf and PV.id_empresa=:empresa and PV.sequencia > 705000 and PV.sequencia < 706000 and PV.condicao <> "C" and pv.tp_pgto <> " " group by tipo UNION select sum(C.total_cupom) as subtotal, C.tp_pgto as tipo from TRANS_CF C where C.data between :datai and :dataf and C.id_empresa=:empresa and C.sequencia > 705000 and C.sequencia < 706000 and C.condicao <> "C" and C.tp_pgto <> '''' " group by tipo ) juncao group by tipo
Emerson, deu certo, muito obrigado!
Vou estudar melhor esse conceito de subselect!
Show de bola, resolvido.
GOSTEI 0