Ich weiß nicht, wie schnell es sein wird, aber ich denke, es kann so gelöst werden:
SELECT ID, min(ORDER_DATE) AS OD,
IF(COUNT(*)=COUNT(CANCEL_DATE),max(CANCEL_DATE),NULL) AS CD
FROM stats GROUP BY CLIENT
Ich konnte es nicht testen, aber die Idee hinter dieser Lösung ist, dass count(cancel_date)
alle Nicht-Null-Wert-Einträge zählen soll und gleich count(*)
ist das bedeutet, dass es keine Nullwerte gibt und max(cancel_date)
zurückgegeben wird , andernfalls null.