Pertanyaan Anda secara khusus melibatkan dua kolom, tetapi saya mengalami situasi di mana saya membutuhkan GREATEST
/LEAST
lebih dari dua kolom. Dalam skenario tersebut, Anda dapat menggunakan COALESCE
dan perluas solusi ke kolom sebanyak yang Anda inginkan.
Berikut adalah contoh dengan tiga kolom a
, b
, dan c
:
GREATEST(
COALESCE(a, b, c),
COALESCE(b, c, a),
COALESCE(c, a, b)
)
Perhatikan bahwa urutan kolom COALESCE
berubah sehingga setiap kolom input adalah elemen pertama COALESCE
setidaknya sekali. Satu-satunya saat ini akan mengembalikan NULL adalah ketika semua kolom input adalah NULL.
Dalam "solusi umum" jumlah COALESCE
pernyataan akan sama dengan jumlah kolom 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),
...
)