Se algum argumento for NULL, você deseja obter o menor dos outros argumentos. Se todos os argumentos forem NULL, você deseja retornar NULL.
Eu poderia usar algo assim para dois argumentos:
LEAST(NVL(colA,colB), NVL(colB,colA))
Porém, começa a ficar feio para> 2 argumentos:
LEAST(COALESCE(colA,colB,colC)
,COALESCE(colB,colA,colC)
,COALESCE(colC,colA,colB))
Nesse ponto eu começaria a considerar valores mágicos; mas isso pode ser problemático (por exemplo, e se um dos valores legitimamente for o 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));