あなたの質問には具体的に2つの列が含まれていますが、GREATESTが必要な状況に遭遇しました。 /LEAST 3列以上の。これらのシナリオでは、COALESCEを使用できます ソリューションを必要な数の列に拡張します。
これは、3つの列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),
...
)