Това е малко грозно, но защото NULL
имат специално значение за вас, това е най-чистият начин, който се сещам да го направя:
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
Тоест, ако някой ред има NULL
, искаме да принудим това да бъде отговорът. Само ако нито един ред не съдържа NULL
трябва ли да върнем MIN
(или MAX
).