On dirait que vous voulez quelque chose comme
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>>
où 999999999 est une valeur numérique suffisamment grande pour être toujours supérieure à toute autre valeur valide. S'il est possible que les trois colonnes aient NULL
ou 0 valeurs, alors vous voudrez probablement ajouter une vérification supplémentaire que si le résultat de ce least
la fonction est 999999999 que vous renvoyez 0 ou NULL
ou tout ce qui a du sens.
@X-Zero a eu la gentillesse de créer un exemple SQL Fiddle
de cette construction. Notez que son exemple filtre les lignes où les trois colonnes ont soit NULL
ou 0 valeurs.