Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQL Auswählen des MIN-Werts aus Zeilendaten mit Nullwerten

Es hört sich so an, als wollten Sie so etwas wie

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>>

wobei 999999999 ein numerischer Wert ist, der groß genug ist, um immer größer als jeder andere gültige Wert zu sein. Wenn es möglich ist, dass alle drei Spalten NULL haben oder 0-Werte, dann möchten Sie wahrscheinlich eine zusätzliche Überprüfung hinzufügen, ob das Ergebnis dieses least ist Funktion 999999999 ist, geben Sie 0 oder NULL zurück oder was sonst Sinn macht.

@X-Zero war so freundlich, ein funktionierendes SQL-Fiddle-Beispiel zusammenzustellen dieses Konstrukts. Beachten Sie, dass sein Beispiel die Zeilen herausfiltert, in denen alle drei Spalten entweder NULL haben oder 0 Werte.