Nó hơi xấu nhưng vì NULL
có một ý nghĩa đặc biệt đối với bạn, đây là cách tốt nhất mà tôi có thể nghĩ để làm điều đó:
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
Nghĩa là, nếu bất kỳ hàng nào có NULL
, chúng tôi muốn buộc đó phải là câu trả lời. Chỉ khi không có hàng nào chứa NULL
chúng ta có nên trả về MIN
không (hoặc MAX
).