2017-10-11 4 views

Antwort

2

Es gibt eine LEAST Funktion, aber es funktioniert nicht NULL-Werte ignorieren, so müssen Sie wie

LEAST(COALESCE(NULLIF(col1,0), 999999) 
    ,COALESCE(NULLIF(col2,0), 999999) 
    ,COALESCE(NULLIF(col3,0), 999999)) 

Für 99999 einige zusätzliche Logik anwenden Sie einen Wert höher als jede bestehende verwenden sollten. Wenn alle Spalten NULL sein könnten oder Null müssen Sie ein endgültiges

NULLIF(LEAST(....), 99999) 

zurückzukehren NULL in diesem Fall hinzufügen.

+0

Danke. Habe gerade am wenigsten gelernt. Aber würde es keine Nullen geben? Beispiel: 1 2 3 0 => 0 – cs0815

+0

Natürlich habe ich die Nullen vergessen, hinzugefügt 'NULLIF' – dnoeth

+0

OK ta. Werde es morgen versuchen. – cs0815

1

Nun können Sie Art von least() verwenden:

select least(col1, col2, col3) 

Das mit 0 s und NULL s heikel ist. Sie geben nicht die Typen von Spalten, aber Sie können NULLIF() und COALESCE() für positive numerische Werte verwenden:

select least(coalesce(nullif(col1, 0), 999999999), 
       coalesce(nullif(col2, 0), 999999999), 
       coalesce(nullif(col2, 0), 999999999) 
      ) 

Natürlich, das gibt den besonderen Wert 999999999, wenn alle Werte 0 oder NULL sind.

Verwandte Themen