Ihre Frage umfasst speziell zwei Spalten, aber ich bin auf Situationen gestoßen, in denen ich GREATEST
benötigte /LEAST
aus mehr als zwei Spalten. In diesen Szenarien können Sie COALESCE
verwenden und erweitern Sie die Lösung auf beliebig viele Spalten.
Hier ist ein Beispiel mit drei Spalten a
, b
, und c
:
GREATEST(
COALESCE(a, b, c),
COALESCE(b, c, a),
COALESCE(c, a, b)
)
Beachten Sie, dass die Spaltenreihenfolge von COALESCE
ändert sich so, dass jede Eingabespalte das erste Element COALESCE
ist zumindest einmal. NULL wird nur zurückgegeben, wenn alle Eingabespalten NULL sind.
In der "allgemeinen Lösung" die Anzahl der COALESCE
Anweisungen entsprechen der Anzahl der Eingabespalten:
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),
...
)