Parece que quieres algo como
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>>
donde 999999999 es un valor numérico lo suficientemente grande como para que siempre sea mayor que cualquier otro valor válido. Si es posible que las tres columnas tengan NULL
o 0 valores, entonces probablemente querrá agregar una verificación adicional de que si el resultado de ese least
la función es 999999999 que devuelve 0 o NULL
o cualquier otra cosa que tenga sentido.
@X-Zero tuvo la amabilidad de armar un ejemplo de SQL Fiddle en funcionamiento
de esta construcción. Tenga en cuenta que su ejemplo está filtrando las filas donde las tres columnas tienen NULL
o 0 valores.