To trochę brzydkie, ale ponieważ NULL
mają dla Ciebie szczególne znaczenie, to najczystszy sposób, jaki mogę sobie wyobrazić, aby to zrobić:
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
Oznacza to, że jeśli dowolny wiersz ma NULL
, chcemy wymusić, aby była to odpowiedź. Tylko jeśli żaden wiersz nie zawiera NULL
czy powinniśmy zwrócić MIN
(lub MAX
).