Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle :sélectionnez la valeur maximale dans différentes colonnes d'une même ligne

Compte tenu de ces données de test ...

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>

... un simple appel à GREATEST() donnera le résultat souhaité :

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>

Notez que greatest() renverra NULL si l'un des arguments est nul. Si c'est un problème, utilisez nvl() pour fournir une valeur par défaut qui ne faussera pas le résultat. Par exemple, si aucune valeur ne peut être négative...

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>