sql >> Databasteknik >  >> RDS >> Oracle

Oracle :välj maximalt värde från olika kolumner i samma rad

Med tanke på dessa testdata ...

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>

... ett enkelt GREATEST()-anrop ger det önskade resultatet:

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>

Observera att greatest() returnerar NULL om något av argumenten är null. Om detta är ett problem, använd nvl() för att tillhandahålla ett standardvärde som inte kommer att förvränga resultatet. Till exempel, om inga värden kan vara negativa...

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. Hur lägger du till PostgreSQL Driver som ett beroende i Maven?

  2. mysql lagrar automatiskt tidsstämpel för att skapa rekord

  3. Hur kan jag ta bort en icke-null-begränsning i Oracle när jag inte vet namnet på begränsningen?

  4. oracle varchar till nummer