Hola carlosdr:
Puedes hacerlo con un INNER JOIN, más o menos así:
Código MySQL:
Ver original+-----------+------------+--------+
| dni | fecha | estado |
+-----------+------------+--------+
| 12345678Y | 2011-05-24 | ALTA |
| 87654321B | 2011-06-10 | ALTA |
| 12345678Y | 2012-01-20 | BAJA |
| 87654321B | 2012-03-05 | BAJA |
| 12345678Y | 2012-05-07 | ALTA |
+-----------+------------+--------+
-> GROUP BY dni
) T2
ON T1.dni
= T2.dni
AND T1.fecha
= T2.max_fecha
; +-----------+------------+--------+
| dni | fecha | estado |
+-----------+------------+--------+
| 87654321B | 2012-03-05 | BAJA |
| 12345678Y | 2012-05-07 | ALTA |
+-----------+------------+--------+
Saludos
Leo.