Dit spørgsmål involverer specifikt to kolonner, men jeg er stødt på situationer, hvor jeg havde brug for GREATEST
/LEAST
af mere end to kolonner. I disse scenarier kan du bruge COALESCE
og udvid løsningen til så mange kolonner, du ønsker.
Her er et eksempel med tre kolonner a
, b
og c
:
GREATEST(
COALESCE(a, b, c),
COALESCE(b, c, a),
COALESCE(c, a, b)
)
Bemærk, at kolonnerækkefølgen for COALESCE
ændres, så hver inputkolonne er det første element COALESCE
mindst en gang. Den eneste gang dette vil returnere NULL er, når alle inputkolonner er NULL.
I den "generelle løsning" er antallet af COALESCE
sætninger vil være lig med antallet af inputkolonner:
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),
...
)