C'est un peu moche mais parce que le NULL
s ont une signification particulière pour vous, voici la façon la plus propre de le faire :
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
Autrement dit, si une ligne a un NULL
, nous voulons forcer cela à être la réponse. Uniquement si aucune ligne ne contient un NULL
doit-on retourner le MIN
(ou MAX
).