Dans PostgreSQL, vous pouvez utiliser le GREATEST
expression :
SELECT GREATEST(date_1, date_2, date_3, date_4, date_5, date_6) AS max_date
...
Comme ce n'est pas du SQL standard, cela ne fonctionnera probablement pas dans d'autres bases de données.
Dans tous les cas, vous pouvez réduire le nombre de comparaisons, puisque le deuxième WHEN
expression d'un CASE
l'instruction n'est testée que si la première n'était pas 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
Je ne sais pas si vous considérez cela comme plus élégant, mais au lieu du AND
clauses que vous pouvez également utiliser ALL
avec un VALUES
expression :
WHEN date_1 >= ALL (VALUES (date_2), (date_3), (date_4), (date_5), (date_6))
THEN date_1
...