Jeg ved ikke hvor hurtigt det vil være, men jeg tror det kan løses sådan her:
SELECT ID, min(ORDER_DATE) AS OD,
IF(COUNT(*)=COUNT(CANCEL_DATE),max(CANCEL_DATE),NULL) AS CD
FROM stats GROUP BY CLIENT
Jeg kunne ikke teste det, men ideen bag denne løsning er, at count(cancel_date) bør tælle alle ikke-null-værdier, og hvis det er lig med count(*) det betyder, at der ikke er nogen null-værdier, og det vil returnere max(cancel_date) , ellers null.