Trong PostgreSQL, bạn có thể sử dụng GREATEST
biểu thức:
SELECT GREATEST(date_1, date_2, date_3, date_4, date_5, date_6) AS max_date
...
Vì đó không phải là SQL tiêu chuẩn, nó có thể sẽ không hoạt động trong các cơ sở dữ liệu khác.
Ở bất kỳ mức nào, bạn có thể giảm số lượng so sánh, kể từ WHEN
thứ hai biểu thức của một CASE
câu lệnh chỉ được kiểm tra nếu câu lệnh đầu tiên không phải là TRUE
:
CASE
WHEN date_1 >= date_2 AND date_1 >= date_3 AND date_1 >= date_4 AND date_1 >= date_5 AND date_1 >= date_6
THEN date_1
WHEN date_2 >= date_3 AND date_2 >= date_4 AND date_2 >= date_5 AND date_2 >= date_6
THEN date_2
WHEN date_3 >= date_4 AND date_3 >= date_5 AND date_3 >= date_6
THEN date_3
WHEN date_4 >= date_5 AND date_4 >= date_6
THEN date_4
WHEN date_5 >= date_6
THEN date_5
ELSE date_6
END
Tôi không biết bạn có coi điều đó thanh lịch hơn không, nhưng thay vì AND
mệnh đề bạn cũng có thể sử dụng ALL
với VALUES
biểu thức:
WHEN date_1 >= ALL (VALUES (date_2), (date_3), (date_4), (date_5), (date_6))
THEN date_1
...