sql >> Databáze >  >> RDS >> Oracle

Oracle :vyberte maximální hodnotu z různých sloupců stejného řádku

Vzhledem k těmto testovacím datům ...

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>

... přímé volání GREATEST() poskytne požadovaný výsledek:

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>

Všimněte si, že greatest() vrátí NULL, pokud je některý z argumentů null. Pokud se jedná o problém, použijte nvl() poskytnout výchozí hodnotu, která nezkresluje výsledek. Například, pokud žádné hodnoty nemohou být záporné....

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. Vrátit všechny cizí klíče, které odkazují na danou tabulku v SQL Server

  2. Převod číslic/čísel ve slovech pro měnu INR (indické rupie) v Oracle PL/SQL

  3. Metoda sběru:Postup oříznutí v databázi Oracle

  4. SQL Server:Databáze se zasekla ve stavu Obnovování