Въпросът ви конкретно включва две колони, но попадах в ситуации, в които имах нужда от GREATEST /LEAST с повече от две колони. В тези сценарии можете да използвате COALESCE и разширете решението до толкова колони, които искате.
Ето пример с три колони a , b и c :
GREATEST(
COALESCE(a, b, c),
COALESCE(b, c, a),
COALESCE(c, a, b)
)
Обърнете внимание, че подреждането на колоните на COALESCE промени, така че всяка входна колона да е първият елемент COALESCE поне веднъж. Единственият път, когато това ще върне NULL, е когато всички входни колони са NULL.
В "общото решение" броят на COALESCE изрази ще бъде равен на броя на входните колони:
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),
...
)