2016-06-07 25 views

Antwort

5

Sie least() und greatest() für diesen Zweck verwenden können. Das Ignorieren NULL:

select greatest(a, b)/greatest(c, d) 

Das Problem sind die NULL Werte. Ich denke, diese Funktionen geben NULL zurück, wenn irgendein Argument NULL ist. Sind die Werte bekannt sind, positiv zu sein, können Sie NULL mit 0 ersetzen:

select greatest(coalesce(a, 0), coalesce(b, 0))/greatest(coalesce(c, 0), coalesce(d, 0)) 

Oder mit zwei Werten, können Sie dieses Konstrukt verwenden:

select greatest(coalesce(a, b), coalesce(b, a))/greatest(coalesce(c, d), coalesce(d, c)) 
+1

Nur Vorbehalt zu wählen am größten (koaleszieren (a, 0), koaleszieren (b, 0))/am größten (koaleszieren (c, 0), koaleszieren (d, 0)) 'ist, dass die Werte in den Spalten alle positiv sind Zahlen. Nur Vorbehalt zu "Größer auswählen (zusammenfassen (a, b), koaleszieren (b, a))/Größt (koaleszieren (c, d), koaleszieren (d, c))" ist, dass nicht alle Spalten nullfähig sind. – Peter4499

+1

@ Peter4499. . . Das bedeutet, dass beide Lösungen in Ihrem Fall funktionieren sollten, obwohl Sie bei der Division durch Null vorsichtig sein möchten. –