En PostgreSQL puedes usar el GREATEST
expresión:
SELECT GREATEST(date_1, date_2, date_3, date_4, date_5, date_6) AS max_date
...
Dado que no es SQL estándar, probablemente no funcionará en otras bases de datos.
En cualquier caso, puede reducir el número de comparaciones, ya que el segundo WHEN
expresión de un CASE
la declaración solo se prueba si la primera no fue 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
No sé si lo consideras más elegante, pero en lugar de AND
cláusulas también podría usar ALL
con un VALUES
expresión:
WHEN date_1 >= ALL (VALUES (date_2), (date_3), (date_4), (date_5), (date_6))
THEN date_1
...