Array
(
)

Ajuda com Left Join Group by Having

Macario
   - 23 jan 2006

Olá colegas, boa tarde.


Estou precisando de uma dica sobre como deve ficar o select abaixo, pois não da erro mas não retorna nada:

A.EMP = codigo da empresa
A.CLI = código do cliente
A.DOC= código do documento
A.DAT = data de emissao do documento
A.VENC = data de vencimento do documento
A.VALOR = valor do documento

B.VALORPAGO = valor ja pago
B.CHAVE = este campo é varchar que contem a concatenação (CHAVE = A.EMP+A.COC+A.DOC)
#Código


select A.EMP,A.CLI,A.DOC,A.DAT,A.VENC,A.VALOR,
sum(B.VALORPAGO)as VALORPAGO,sum(A.VALOR-B.VALOPAGO)as VALOR_em_ABERTO, CHAVE
from ARQDOCP A, ARQMCOC B
where
A.EMP = ´001´ and
A.COC = ´50147´ and
A.DOC = ´102030´ and
B.MCHAVE = (A.EMP+A.COC+A.DOC)
group by A.EMP,A.CLI,A.DOC,A.DAT,A.VENC,A.VALOR,B.CHAVE
having sum(B.VALORPAGO) < A.VALOR


Com esta instrução preciso do seguinte:

Listar todos documentos que ainda estão em aberto que seria (A.VALOR-B.VALORPAGO).


meu Grid é +/- assim

#Código

DOC-----EMISSAO-------VENCTO---VALOR EM ABERTO
000---00/00/0000---00/00/0000------0,00
000---00/00/0000---00/00/0000------0,00
000---00/00/0000---00/00/0000------0,00
000---00/00/0000---00/00/0000------0,00
000---00/00/0000---00/00/0000------0,00
000---00/00/0000---00/00/0000------0,00
000---00/00/0000---00/00/0000------0,00



Grato.

:arrow:


Macario
   - 23 jan 2006

Esqueci de mencionar o seguinte quando o documento ja tem um pagamento parcial funciona por ele encontra registro em ARQMCOC

agora quando o documento ainda não teve nao retorna.


Macario
   - 23 jan 2006

Resolvido

Eu não tinha compreendido corretamento o funcionamento da clausula Having


Grato pela atenção.

:arrow:



Citação:
select A.COC,A.DOC,A.DAT,A.VEN,A.VLR, B.MCHAVE,
coalesce(sum(B.MVALOR),0)as MVALOR,sum(A.VLR-B.MVALOR)as VALORABERTO
from ARQDOCP A
left join ARQMCOC B on(B.MCHAVE = (A.EMP+A.COC+A.DOC))
where A.EMP = ´001´ and A.COC = ´50147´
group by A.COC,A.DOC,A.DAT,A.VEN,A.VLR,B.MCHAVE
having coalesce(sum(B.MVALOR),0) < A.VLR