salve a tutti

ho un db con campo1,campo2,campo3,campo4,campo5,altri_campi

campo5 è una data.

ho bisogno di selezionare tutti i campi di ogni record con campo1=cp1,campo2=cp2,campo3=cp3 e se ci sono più record prendere quello con campo5 maggiore (cioè più recente visto che è una data).

avevo pensato a

codice:
SELECT *
FROM tabella
WHERE campo1=cp1 And campo2=cp2 And campo3=cp3 And campo4=cp4And AND campo5=
(
   SELECT max(campo5) FROM tabella
   WHERE campo1=cp1 And campo2=cp2 And campo3=cp3 And campo4=cp4
)
ORDER BY campo1,campo2;
ma non è corretto perchè la subquery trova il max di tutto il db quindi se ci sono record con data diversa anche se andrebbero presi non li prende.

avevo pensato a GROUP BY ...ma poi non mi prende tutti i campi....

help..
grazie cmq.