Det er lidt grimt, men fordi NULL
s har en særlig betydning for dig, er dette den reneste måde, jeg kan tænke mig at gøre 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 vil sige, hvis en række har en NULL
, vil vi tvinge det til at være svaret. Kun hvis ingen rækker indeholder en NULL
skal vi returnere MIN
(eller MAX
).