Ajuda com Select [RESOLVIDO]

Boa tarde…
Estou usando o postgres e não estou conseguindo montar um select que faça o seguinte

Buscar a última compra anterior a determinada data informada…

Eu não estou conseguindo achar uma lógica para isso

Por ex: tenho várias compras…digamos que 5 a cada dia do ano… (exemplo)…
e quero buscar na base de dados a última compra feita anterior ao dia 4-08-2012

o que tenho é o seguinte:
(Só vou colocar aqui os campos pertinentes a dúvida para não dar muito código


SELECT COMPRA.CDCOMPRA, COMPRA.DATAEMISSAO

FROM COMPRA

WHERE COMPRA.DATAEMISSAO < '2012-08-04 00:00:00'

mas assim ele busca todas as compras emitidas anteriormente a data 4-08-2012 mas
eu estou prescisando somente da última

Creio que é fácil de fazer (ao menos tenho a impressão) e talvez eu esteja cansado já he he he…

Um max na dataEmissao não vai nao ?

ok…também estou pensando nisso, mas onde iria o max… se tento por ele no WHERE, dá erro, pois não presciso somente da última data, e sim do código da compra

Será que assim não funciona…

[code]SELECT COMPRA.CDCOMPRA, COMPRA.DATAEMISSAO

FROM COMPRA

WHERE COMPRA.DATAEMISSAO < ‘2012-08-04 00:00:00’

AND COMPRA.DATAEMISSAO = MAX(COMPRA.DATAEMISSAO)[/code]

[quote=fpaiva]Será que assim não funciona…

[code]SELECT COMPRA.CDCOMPRA, COMPRA.DATAEMISSAO

FROM COMPRA

WHERE COMPRA.DATAEMISSAO < ‘2012-08-04 00:00:00’

AND COMPRA.DATAEMISSAO = MAX(COMPRA.DATAEMISSAO)[/code][/quote]

Pois é…tentei assim também mas dá erro…

[quote]
ERRO: agregação não é permitida na cláusula WHERE
LINHA 7: AND COMPRA.DATAEMISSAO = MAX(COMPRA.DATAEMISSAO)[/quote]

creio que eu tenha que fazer um select interno para tratar isso…mas não achei ainda uma lógica para isso

Achei uma solução… não sei se é a melhor, mas funcionou…posto aqui agora para os que tiverem a mesma dúvida …

Deixei quase o mesmo select, bastou trabalhar com o order by e colocar um LIMIT no fim…para trazer somente o primeiro registro então ficou assim


SELECT COMPRA.CDCOMPRA, COMPRA.DATAEMISSAO  
  
FROM COMPRA  
  
WHERE COMPRA.DATAEMISSAO < '2012-08-04 00:00:00'  

 ORDER BY COMPRA.DATAEMISSAO DESC , COMPRA.CDCOMPRA DESC LIMIT 1

Obrigado a todos pela atenção e pela ajuda…