Twoje pytanie dotyczy konkretnie dwóch kolumn, ale napotkałem sytuacje, w których potrzebowałem GREATEST
/LEAST
więcej niż dwie kolumny. W tych scenariuszach możesz użyć COALESCE
i rozwiń rozwiązanie do dowolnej liczby kolumn.
Oto przykład z trzema kolumnami a
, b
i c
:
GREATEST(
COALESCE(a, b, c),
COALESCE(b, c, a),
COALESCE(c, a, b)
)
Zwróć uwagę, że kolejność kolumn w COALESCE
zmienia się tak, że każda kolumna wejściowa jest pierwszym elementem COALESCE
przynajmniej raz. Zwróci to NULL tylko wtedy, gdy wszystkie kolumny wejściowe mają wartość NULL.
W „rozwiązaniu ogólnym” liczba COALESCE
zestawienia będą równe liczbie kolumn wejściowych:
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),
...
)