Ciao pippozzolo e Benvenuto nel Forum GT,
potresti darci ulteriori indicazioni su cos'è che non va? Le due query postate ti danno un errore? O semplicemente non ti danno il risultato aspettato?
Credo che la seconda query abbia la sintassi da rivedere.
Non ho provato la query che segue ma dovrebbe funzionare, almeno nella logica:
** SELECT max(scadenza_certificato) FROM certificato WHERE scadenza_certificato IN (SELECT * FROM certificato WHERE scadenza_certificato <= (NOW() + interval 2 day)) GROUP by idcliente**
La subquery in rosso ti restituisce solo i record con data minore di oggi aumentata di 2 giorni. La query in nero seleziona invece il massimo delle date raggruppandole per idcliente, ma cerca tali record solo fra quelli che rispettano la subquery.
Spero sia ciò che cercavi.
Fammi sapere se funziona!