Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle :изберете максимална стойност от различни колони на същия ред

Като се имат предвид тези тестови данни...

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>

... едно просто извикване GREATEST() ще даде желания резултат:

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>

Обърнете внимание, че greatest() ще върне NULL, ако някой от аргументите е нулев. Ако това е проблем, използвайте nvl() да предостави стойност по подразбиране, която няма да изкриви резултата. Например, ако нито една стойност не може да бъде отрицателна....

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>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как правилно да обработваме датите в ограниченията на заявките

  2. Използването на IS NULL или IS NOT NULL при условия на присъединяване - Теоретичен въпрос

  3. ORA-65139:Несъответствие между XML файл с метаданни и файл с данни

  4. Oracle SqlPlus - записва изход във файл, но не се показва на екрана

  5. Oracle Entity Framework - Генерирайте обект от таблици в различна схема