Faz assim

 

select 

            a.CDPEDIDO, 

a.VALOR, 

(select coalesce(sum(b.ValorPgto) , 0) from BDpagamentos b where b.cdpedido
= a.cdpedido) VALOR_PAGO

from BDpedidos a
group by 

a.CDpedido, a.

Valor, VALOR_PAGO
having VALOR <> (select coalesce(sum(b.ValorPgto) , 0) from BDpagamentos b
where b.cdpedido = a.cdpedido)

 

Enjoy

 

De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de Vinicius da Silva Pinto
Enviada em: quarta-feira, 1 de abril de 2009 09:54
Para: delphi-br@yahoogrupos.com.br
Assunto: RES: [delphi-br] Ajuca com SQL

 

Isso que esta me deixando maluco, nesta situação:
select a.CDPEDIDO, a.VALOR, (select coalesce(sum(b.ValorPgto) , 0)
from BDpagamentos b where b.cdpedido = a.cdpedido) VALOR_PAGO
from BDpedidos a
group by a.CDpedido, a.Valor, VALOR_PAGO
o resultado são tres colunas, CDPEDIDO, VALOR e VALOR_PAGO

Mais se eu acrescento HAVING:
select a.CDPEDIDO, a.VALOR, (select coalesce(sum(b.ValorPgto) , 0)
from BDpagamentos b where b.cdpedido = a.cdpedido) VALOR_PAGO
from BDpedidos a
group by a.CDpedido, a.Valor, VALOR_PAGO
having VALOR <> VALOR_PAGO

me retorna o seguinte erro:
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
VALORGERAL.
At line 5, column 17.

é coisa de doido

-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
[mailto:delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
]Em
nome de Vinicius da Silva Pinto
Enviada em: quarta-feira, 1 de abril de 2009 09:43
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> 
Assunto: RES: [delphi-br] Ajuca com SQL

Sim, ele reclama logo de cara do campo VALOR_PAGO, mesmo colocando HAVING

-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
[mailto:delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
]Em
nome de Luciano Calenzani Simões
Enviada em: quarta-feira, 1 de abril de 2009 09:40
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> 
Assunto: RES: [delphi-br] Ajuca com SQL

Testou desta forma?

select CDPEDIDO, VALOR, (select coalesce(sum( ValorPgto) , 0)
from BDpagamentos where cdpedido = BDpedidos.cdpedido) VALOR_PAGO
from BDpedidos
where VALOR <> VALOR_PAGO

Luciano Calenzani Simões

________________________________
De: Vinicius da Silva Pinto <vinic...@cnen.gov.br
<mailto:vinicius%40cnen.gov.br> >
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> 
Enviadas: Quarta-feira, 1 de Abril de 2009 9:26:09
Assunto: RES: RES: [delphi-br] Ajuca com SQL

Utilizando HEAVING, ele reclama do campo VALOR_PAGO

select a.CDPEDIDO, a.VALOR, (select coalesce(sum( b.ValorPgto) , 0)
from BDpagamentos b where b.cdpedido = a.cdpedido) VALOR_PAGO
from BDpedidos a
group by a.CDpedido, a.Valor
HAVING A.VALOR <> VALOR_PAGO

Retirando Group by e heavin, funciona que é uma beleza, mais traz tbm todos
os registros pagos integralmente.

Estou fazendo diversos testes utilizando o IBexpert em uma base INTERBASE
6.5

-----Mensagem original---- -
De: delphi...@yahoogrup os.com.br [mailto:delphi...@yahoogrup os.com.br]Em
nome de José Roberto Marque
Enviada em: quarta-feira, 1 de abril de 2009 08:37
Para: delphi...@yahoogrup os.com.br
Assunto: Re: RES: [delphi-br] Ajuca com SQL

Complicado, hein, Vinicius.

Será que não é o HAVING ? Porque o LEFT OUTER JOIN vai retornar nulo se o
registro não existir. A dúvida que fica é como o HAVING trataria isso ...

--- Em qua, 1/4/09, Vinicius da Silva Pinto <vinic...@cnen. gov.br>
escreveu:

De: Vinicius da Silva Pinto <vinic...@cnen. gov.br>
Assunto: RES: [delphi-br] Ajuca com SQL
Para: delphi...@yahoogrup os.com.br
Data: Quarta-feira, 1 de Abril de 2009, 7:56

Grande Jose, olha, o resultado foi o mesmo, todas as duas opções
(a minha e

a sua com left outer join) deram o mesmo resultado.

estou fazendo teste com coalesce...

Vinicius

Tenta assim :

SELECT A.CDPEDIDO, A.DATAEVENTO, A.VALOR, SUM( G.VALORPAGTO )

FROM BDPEDIDOS A LEFT OUTER JOIN BDPAGAMENTOS G ON A.CDPEDIDO = G.CDPEDIDO

WHERE A.DATAEVENTO <= '01/04/2009'

GROUP BY CDPEDIDO, DATAEVENTO, VALOR

HAVING SUM(G.ValorPgto) < A.valor

Entendeu ?

Vê se funciona.

--- Em sex, 27/3/09, Vinicius da Silva Pinto <vinic...@cnen. gov.br>

escreveu:

De: Vinicius da Silva Pinto <vinic...@cnen. gov.br>

Assunto: [delphi-br] Ajuca com SQL

Para: delphi...@yahoogrup os.com.br

Data: Sexta-feira, 27 de Março de 2009, 15:33

Ve se alguem pode me ajudar, já quebrei a cabeça e não obtive o

resultado

satisfatório.

São duas tabelas, bem simples uma com os dados de um pedido com codigo,

nome...e ValorTotal.

Na outra tabela, a de pagamentos, só tem registro quando o cliente paga,

pode ser a vista ou parcelado.

As duas tabelas são unidas pelo campo CDpedido

O que eu quero é o seguinte... um relação de todos os pedidos que ainda não

pagaram o valor total.

Fiz a seguinte query:

SELECT A.CDPEDIDO, A.dataevento, A.valor AS VALORTOTAL, SUM(G.ValorPgto) AS

TOTALPAGO

FROM BDpedidos A, BDpagamentos G

WHERE G.CDpedido = A.CDpedido AND A.DATAEVENTO <= '01/04/2009'

GROUP BY CDPEDIDO, DATAEVENTO, VALOR

HAVING SUM(G.ValorPgto) < A.valor

Funciona, só que só aparecem os pedidos que já tiveram algum pagamento, os

registros que estão na

tabela principal que ainda não tiveram nenhum pagamento, não sai...

Pergunta.... . como faço para aparecer tbm os registros que não tiveram

pagamento.

Agradeço qualquer ajuda ou dica.

Vinicius

Veja quais são os assuntos do momento no Yahoo! +Buscados

http://br.maisbusca dos.yahoo. com

[As partes desta mensagem que não continham texto foram removidas]

------------ --------- --------- ------

--

<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbusca dos.yahoo. com

[As partes desta mensagem que não continham texto foram removidas]

------------ --------- --------- ------

--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

------------------------------------

--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>





__________ Informação do NOD32 IMON 3980 (20090401) __________

Esta mensagem foi verificada pelo NOD32 sistema antivírus
http://www.eset.com.br



[As partes desta mensagem que não continham texto foram removidas]

Responder a