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

Oracle:Maximalwert aus verschiedenen Spalten derselben Zeile auswählen

Angesichts dieser Testdaten ...

SQL> select *
  2  from your_table
  3  /

NAME         M1         M2         M3         M4
---- ---------- ---------- ---------- ----------
A             1          2          3          4
B             6          3          4          5
C             1          5          2          1

SQL>

... ein direkter Aufruf von GREATEST() liefert das gewünschte Ergebnis:

SQL> select name
  2          , greatest(m1, m2, m3, m4) as the greatest_m
  3  from your_table
  4  /

NAME THE_GREATEST_M
---- --------------
A                 4
B                 6
C                 5

SQL>

Beachten Sie, dass greatest() gibt NULL zurück, wenn eines der Argumente null ist. Wenn dies ein Problem ist, verwenden Sie nvl() um einen Standardwert bereitzustellen, der das Ergebnis nicht verfälscht. Zum Beispiel, wenn keine Werte negativ sein können....

SQL> select name
  2          , greatest(nvl(m1,0), nvl(m2,0), nvl(m3,0), nvl(m4,0)) as the greatest_m
  3  from your_table
  4  /

NAME THE_GREATEST_M
---- --------------
A                 4
B                 6
C                 5

SQL>