Jag vet inte hur snabbt det kommer att gå men jag antar att det kan lösas så här:
SELECT ID, min(ORDER_DATE) AS OD,
IF(COUNT(*)=COUNT(CANCEL_DATE),max(CANCEL_DATE),NULL) AS CD
FROM stats GROUP BY CLIENT
Jag kunde inte testa det men tanken bakom denna lösning är att count(cancel_date)
bör räkna alla poster som inte är nollvärden och om det är lika med count(*)
det betyder att det inte finns några nollvärden och det kommer att returnera max(cancel_date)
, annars null.