Det är lite fult men eftersom NULL
Om det har en speciell betydelse för dig är det här det renaste sättet jag kan tänka mig att göra det på:
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
Det vill säga om någon rad har en NULL
, vi vill tvinga att det blir svaret. Endast om inga rader innehåller en NULL
ska vi returnera MIN
(eller MAX
).