Si algún argumento es NULL, desea tomar el menor de los otros argumentos. Si todos los argumentos son NULL, desea devolver NULL.
Podría usar algo como esto para dos argumentos:
LEAST(NVL(colA,colB), NVL(colB,colA))
Sin embargo, comienza a ponerse feo para> 2 argumentos:
LEAST(COALESCE(colA,colB,colC)
,COALESCE(colB,colA,colC)
,COALESCE(colC,colA,colB))
En ese momento, comenzaría a considerar valores mágicos; pero esto puede tener errores (por ejemplo, ¿qué pasa si uno de los valores legítimamente es el valor mágico?):
SELECT CASE WHEN r = maxv THEN NULL ELSE r END AS result
FROM (SELECT LEAST(NVL(:colA,maxv)
,NVL(:colB,maxv)
,NVL(:colC,maxv)) AS r, maxv
FROM (SELECT 9.999999999999999999999999999999999999999e125
AS maxv FROM DUAL));