subselect para mostrar um somatório da diferença

SQL Server

Delphi

Firebird

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
Cristiane

Cristiane

Curtidas 0

Melhor post

Marisiana Battistella

Marisiana Battistella

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
GOSTEI 1

Mais Respostas

Isaac Jose

Isaac Jose

18/06/2015

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.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

18/06/2015

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
GOSTEI 0
Cristiane

Cristiane

18/06/2015

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
GOSTEI 0
Cristiane

Cristiane

18/06/2015

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
GOSTEI 0
Cristiane

Cristiane

18/06/2015

isso mesmo, deu certinho valeu Marisiana
GOSTEI 0
Cristiane

Cristiane

18/06/2015

isso mesmo, deu certinho valeu Marisiana
GOSTEI 0
Alex Lekao

Alex Lekao

18/06/2015

acompanhando.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

18/06/2015

Por nada Cristiane!
GOSTEI 0
Alex Lekao

Alex Lekao

18/06/2015

cheguei atrasado.

kkkkkkkkkkkkk
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

18/06/2015

hahahaha... Antes tarde do que nunca Alex!! =D
GOSTEI 0
Alex Lekao

Alex Lekao

18/06/2015

kkkkkkkk

vdd...

mas tem erro nao.

na proxima eu acerto.

rsrsr
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

18/06/2015

Isso ai... =D
O que importa é que a intenção era de participar!!
GOSTEI 0
Alex Lekao

Alex Lekao

18/06/2015

rsrsr...

Pois eh.

mesmo que não tenho participado, só esporadicamente, as vezes eu tento. rsrs
GOSTEI 0
POSTAR