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.