Nevím, jak rychle to bude, ale myslím, že se to dá vyřešit takto:
SELECT ID, min(ORDER_DATE) AS OD,
IF(COUNT(*)=COUNT(CANCEL_DATE),max(CANCEL_DATE),NULL) AS CD
FROM stats GROUP BY CLIENT
Nemohl jsem to otestovat, ale myšlenkou tohoto řešení je, že count(cancel_date)
by měl počítat všechny nenulové hodnoty a pokud je roven count(*)
to znamená, že neexistují žádné hodnoty null a vrátí max(cancel_date)
, jinak je null.