Es ist ein bisschen hässlich, aber weil der NULL
s haben eine besondere Bedeutung für Sie, dies ist die sauberste Art, die ich mir vorstellen kann:
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
Das heißt, wenn eine Zeile einen NULL
enthält , das wollen wir als Antwort erzwingen. Nur wenn keine Zeilen einen NULL
enthalten sollen wir den MIN
zurückgeben (oder MAX
).