Agak jelek tapi karena NULL s memiliki arti khusus bagi Anda, ini adalah cara terbersih yang dapat saya pikirkan untuk melakukannya:
SELECT recordid, MIN(startdate),
CASE WHEN MAX(CASE WHEN enddate IS NULL THEN 1 ELSE 0 END) = 0
THEN MAX(enddate)
END
FROM tmp GROUP BY recordid
Artinya, jika ada baris yang memiliki NULL , kami ingin memaksa itu menjadi jawabannya. Hanya jika tidak ada baris yang berisi NULL haruskah kita mengembalikan MIN (atau MAX ).