Sembra che tu voglia qualcosa come
SELECT least( (case when col1 is null or col1 = 0 then 999999999 else col1 end),
(case when col2 is null or col2 = 0 then 999999999 else col2 end),
(case when col3 is null or col3 = 0 then 999999999 else col3 end) )
FROM <<table name>>
dove 999999999 è un valore numerico sufficientemente grande da essere sempre maggiore di qualsiasi altro valore valido. Se è possibile che tutte e tre le colonne abbiano NULL
o 0 valori, probabilmente vorrai aggiungere un ulteriore controllo che se il risultato di quel least
è 999999999 che restituisci 0 o NULL
o qualsiasi altra cosa abbia senso.
@X-Zero è stato così gentile da mettere insieme un esempio SQL Fiddle
funzionante di questo costrutto. Nota che il suo esempio sta filtrando le righe in cui tutte e tre le colonne hanno NULL
o 0 valori.