Het is een beetje lelijk, maar omdat de NULL
s hebben een speciale betekenis voor jou, dit is de schoonste manier die ik kan bedenken om het te doen:
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
Dat wil zeggen, als een rij een NULL
. heeft , willen we dwingen dat het antwoord te zijn. Alleen als er geen rijen een NULL
bevatten moeten we de MIN
return teruggeven (of MAX
).