Je to trochu ošklivé, ale protože NULL
s má pro vás zvláštní význam, toto je nejčistší způsob, jak to mohu udělat:
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
To znamená, že pokud některý řádek obsahuje NULL
, chceme donutit, aby to byla odpověď. Pouze pokud žádné řádky neobsahují NULL
měli bychom vrátit MIN
(nebo MAX
).