Oracle
 sql >> Base de données >  >> RDS >> Oracle

SQL Sélection de la valeur MIN à partir des données de ligne avec des valeurs nulles

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.