少し醜いですが、NULL
sはあなたにとって特別な意味を持っています、これは私がそれをするために考えることができる最もきれいな方法です:
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
つまり、いずれかの行にNULL
がある場合 、私たちはそれを答えに強制したいと思います。 NULL
を含む行がない場合のみ MIN
を返す必要があります (またはMAX
。