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),
...
)