Su pregunta involucra específicamente dos columnas, pero me encontré con situaciones en las que necesitaba GREATEST
/LEAST
de más de dos columnas. En esos escenarios puedes usar COALESCE
y expanda la solución a tantas columnas como desee.
Aquí hay un ejemplo con tres columnas a
, b
y c
:
GREATEST(
COALESCE(a, b, c),
COALESCE(b, c, a),
COALESCE(c, a, b)
)
Tenga en cuenta que el orden de las columnas de COALESCE
cambia para que cada columna de entrada sea el primer elemento COALESCE
al menos una vez. La única vez que esto devolverá NULL es cuando todas las columnas de entrada son NULL.
En la "solución general" el número de COALESCE
declaraciones será igual al número de columnas de entrada:
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),
...
)