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
tipoGOSTEI 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 totalEu 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
tipoEmerson, 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
tipoEmerson, deu certo, muito obrigado!
Vou estudar melhor esse conceito de subselect!
Show de bola, resolvido.
GOSTEI 0