Vaše otázka konkrétně zahrnuje dva sloupce, ale dostal jsem se do situací, kdy jsem potřeboval GREATEST /LEAST z více než dvou sloupců. V těchto scénářích můžete použít COALESCE a rozšiřte řešení na tolik sloupců, kolik chcete.
Zde je příklad se třemi sloupci a , b a c :
GREATEST(
COALESCE(a, b, c),
COALESCE(b, c, a),
COALESCE(c, a, b)
)
Všimněte si, že pořadí sloupců COALESCE se změní tak, že každý vstupní sloupec je prvním prvkem COALESCE alespoň jednou. Jediný případ, kdy to vrátí hodnotu NULL, je, když jsou všechny vstupní sloupce NULL.
V "obecném řešení" číslo COALESCE příkazů se bude rovnat počtu vstupních sloupců:
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),
...
)