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-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br]em nome de José Roberto Marque Enviada em: quarta-feira, 1 de abril de 2009 08:37 Para: delphi-br@yahoogrupos.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-br@yahoogrupos.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.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>