La tua domanda riguarda specificamente due colonne, ma mi sono imbattuto in situazioni in cui avevo bisogno di GREATEST
/LEAST
di più di due colonne. In questi scenari puoi usare COALESCE
ed espandi la soluzione a tutte le colonne che desideri.
Ecco un esempio con tre colonne a
, b
e c
:
GREATEST(
COALESCE(a, b, c),
COALESCE(b, c, a),
COALESCE(c, a, b)
)
Nota che l'ordinamento delle colonne di COALESCE
cambia in modo che ogni colonna di input sia il primo elemento COALESCE
almeno una volta. L'unica volta che restituirà NULL è quando tutte le colonne di input sono NULL.
Nella "soluzione generale" il numero di COALESCE
le istruzioni saranno uguali al numero di colonne di input:
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),
...
)