Ik weet niet hoe snel het zal zijn, maar ik denk dat het als volgt kan worden opgelost:
SELECT ID, min(ORDER_DATE) AS OD,
IF(COUNT(*)=COUNT(CANCEL_DATE),max(CANCEL_DATE),NULL) AS CD
FROM stats GROUP BY CLIENT
Ik kon het niet testen, maar het idee achter deze oplossing is dat count(cancel_date)
moet alle niet-null-waarde-items tellen en als het gelijk is aan count(*)
dat betekent dat er geen null-waarden zijn en het retourneert max(cancel_date)
, anders nul.