Hola
Si hace caso del DISTINCT lo que pasa es que se trae la información por ID.
No se que BD usas, en algunas no acepta el Last, pruebalo:
Código SQL
[-]select DISTINCT id, usuario, direccion, LAST(fecha) as Fecha from tutabla
Group by id, usuario, direccion
O
Código SQL
[-]select LATS(fecha) as fecha, Id, usuario, direccion from tutabla
Group by id, usuario, direccion
Saludos