मुझे नहीं पता कि यह कितना तेज़ होगा, लेकिन मुझे लगता है कि इसे इस तरह हल किया जा सकता है:
SELECT ID, min(ORDER_DATE) AS OD,
IF(COUNT(*)=COUNT(CANCEL_DATE),max(CANCEL_DATE),NULL) AS CD
FROM stats GROUP BY CLIENT
मैं इसका परीक्षण नहीं कर सका लेकिन इस समाधान के पीछे का विचार यह है कि count(cancel_date)
सभी शून्य मान प्रविष्टियों को गिनना चाहिए और यदि यह count(*)
. के बराबर है इसका मतलब है कि कोई शून्य मान नहीं हैं और यह max(cancel_date)
लौटाएगा , अन्यथा शून्य।