Oracle
 sql >> Database >  >> RDS >> Oracle

SQL Selezione del valore MIN dai dati di riga con valori null

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.