subselect para mostrar um somatório da diferença

18/06/2015

eu tenho a tabela de vendas e pagamentos realizados, podendo ser pago uma parte inicial e outra posteriormente
queria ver se tem como pegar o total da diferença q falta receber de cada pedido

com este select abaixo me traz a diferença de cada pedido, mas queria ver se tem como trazer o somatório desta diferença para evitar usar while no delphi

select (sum(p.valor) - vd.total_venda) as diferenca , sum(p.valor) as pago, p.cod_pedido, vd.total_venda from pagamentos p
inner join venda_orcamento vd on vd.cod_venda_orcamento = p.cod_pedido
inner join condicaopagamento fp on fp.cod_cond_pagamento = vd.cod_forma_pagamento
where vd.cod_cliente = 144 group by p.cod_pedido, vd.total_venda
having sum(p.valor) - vd.total_venda < 0

imagino se colocasse o calculo da diferença em um select interno a este poderia dar certo. Mas tento e não consigo

desde já agradeço

Melhor resposta

18/06/2015

Errei o código... me desculpe, não conferi como tinha postado...
Faltou informar a cláusula from..
select SUM(result.diferenca) as diferenca
from ( select (sum(p.valor) - vd.total_venda) as diferenca, 
       sum(p.valor) as pago,
       p.cod_pedido,
       vd.total_venda
from pagamentos p
inner join venda_orcamento vd
on vd.cod_venda_orcamento = p.cod_pedido
inner join condicaopagamento fp
on fp.cod_cond_pagamento = vd.cod_forma_pagamento
where vd.cod_cliente = 144 
group by p.cod_pedido, 
         vd.total_venda
having sum(p.valor) - vd.total_venda < 0 ) result

Marisiana

Responder Citar

Outras Respostas

18/06/2015

Isaac Jose

Bom dia Cristiane. nao entendi bem o que vc quer.
se puder coloque o calculo e o resultado obtido hoje e como vc deseja que ele fique.

abraços.
Responder Citar

18/06/2015

Marisiana

Seria isso Cristiane?
select SUM(result.diferenca) as diferenca
( select (sum(p.valor) - vd.total_venda) as diferenca, 
       sum(p.valor) as pago,
       p.cod_pedido,
       vd.total_venda
from pagamentos p
inner join venda_orcamento vd
on vd.cod_venda_orcamento = p.cod_pedido
inner join condicaopagamento fp
on fp.cod_cond_pagamento = vd.cod_forma_pagamento
where vd.cod_cliente = 144 
group by p.cod_pedido, 
         vd.total_venda
having sum(p.valor) - vd.total_venda < 0 ) result
Responder Citar

18/06/2015

Cristiane

o cálculo da diferença está no sql: sum(p.valor) - vd.total_venda) as diferenca

com este select o resultado fica assim:

diferença pago cod_venda total_venda
-1 14 1 15
-20 30 2 50
-30 10 3 40

queria q ficasse assim:

diferenca
-51

sendo o -51 o somatório da coluna diferença
Responder Citar

18/06/2015

Cristiane

Marisiana, fiz o teste mas da erro no result, parece q não existe essa função se for no meu caso. uso o firebird, ibexpert
Responder Citar

18/06/2015

Cristiane

isso mesmo, deu certinho valeu Marisiana
Responder Citar

18/06/2015

Cristiane

isso mesmo, deu certinho valeu Marisiana
Responder Citar

18/06/2015

Alex Lekao

acompanhando.
Responder Citar

18/06/2015

Marisiana

Por nada Cristiane!
Responder Citar

18/06/2015

Alex Lekao

cheguei atrasado.

kkkkkkkkkkkkk
Responder Citar

18/06/2015

Marisiana

hahahaha... Antes tarde do que nunca Alex!! =D
Responder Citar

18/06/2015

Alex Lekao

kkkkkkkk

vdd...

mas tem erro nao.

na proxima eu acerto.

rsrsr
Responder Citar

19/06/2015

Marisiana

Isso ai... =D
O que importa é que a intenção era de participar!!
Responder Citar

19/06/2015

Alex Lekao

rsrsr...

Pois eh.

mesmo que não tenho participado, só esporadicamente, as vezes eu tento. rsrs
Responder Citar