Ciao,
sulla tabella delle date, visto che sei sul potente Oracle, utilizza la funzione DENSE_RANK
Esempio
MAX (codice1 )KEEP (DENSE_RANK LAST ORDER BY data3 ASC NULLS LAST)
Se hai bisogno di altre info sulla funzione sopra indicata o cerchi in internet oppure chiedi pure
Ciao
Mik