¿Probaste algo así?:
Código MySQL:
Ver original *,
expedients E
(SELECT codstatus
, codexpedient
, status, titoltextepredefinit
, MAX(fechahora
) datarecepcio
, GROUP BY codexpedient
) S
ON E.codexpedient
= S.codexpedient
Cambié la formula que usas para hacer el cálculo,porque ya existe un a función más eficiente para eso (TIMESTAMPDIFF()).
Un tip que te agregaría es que no es buena práctica usar el asterisco para las consultas, a menos que efectivamente estés por usar luego todos los datos de todas las columnas de las tablas leídas... que no es aparentemente el caso.
Traer todo recarga inútilmente el proceso, las comunicaciones y requiere más memoria del buffer de datos. A menos que sea absolutamente necesario, indica específicamente qué campos vas a usar y el resto no los pongas.
Es preferible perder tiempo tipeando nombres, y no perder perfomance.