sql >> Database >  >> RDS >> Oracle

Oracle:selecteer maximale waarde uit verschillende kolommen van dezelfde rij

Gezien deze testgegevens ...

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>

... een eenvoudige GREATEST()-aanroep geeft het gewenste resultaat:

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>

Merk op dat greatest() geeft NULL terug als een van de argumenten null is. Als dit een probleem is, gebruik dan nvl() om een ​​standaardwaarde op te geven die de uitkomst niet vervormt. Als er bijvoorbeeld geen waarden negatief kunnen zijn....

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. Oracle:hoe UPSERT (bijwerken of invoegen in een tabel?)

  2. Automatisch een SQL Server-taak maken

  3. PostgreSQL-deadlocks vermijden bij het uitvoeren van bulkupdate- en verwijderingsbewerkingen

  4. SQL Server SHOWPLAN_TEXT