Votre question implique spécifiquement deux colonnes, mais j'ai rencontré des situations où j'avais besoin de GREATEST
/LEAST
de plus de deux colonnes. Dans ces scénarios, vous pouvez utiliser COALESCE
et étendez la solution à autant de colonnes que vous le souhaitez.
Voici un exemple avec trois colonnes a
, b
, et c
:
GREATEST(
COALESCE(a, b, c),
COALESCE(b, c, a),
COALESCE(c, a, b)
)
Notez que l'ordre des colonnes de COALESCE
change pour que chaque colonne d'entrée soit le premier élément COALESCE
au moins une fois. La seule fois où cela renverra NULL est lorsque toutes les colonnes d'entrée sont NULL.
Dans la "solution générale" le nombre de COALESCE
seront égaux au nombre de colonnes d'entrée :
GREATEST(
COALESCE(col1, col2, col3, col4, ....),
COALESCE(col2, col3, col4, ...., col1),
COALESCE(col3, col4, ...., col1, col2),
COALESCE(col4, ...., col1, col2, col3),
COALESCE(...., col1, col2, col3, col4),
...
)