sql >> Base de Datos >  >> RDS >> Oracle

Oracle:seleccione el valor máximo de diferentes columnas de la misma fila

Dados estos datos de prueba...

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>

... una simple llamada a GREATEST() dará el resultado deseado:

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>

Tenga en cuenta que greatest() devolverá NULL si alguno de los argumentos es nulo. Si esto es un problema, use nvl() para proporcionar un valor predeterminado que no distorsionará el resultado. Por ejemplo, si ningún valor puede ser negativo....

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>