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の場合、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. テーブルの列が同じ場合、EXCEPTはJOINよりも高速に実行されますか

    2. SQLServer2008の列の千単位の区切り記号

    3. MySQL#1093-FROM句で更新するターゲットテーブル「giveaways」を指定できません

    4. SQL ServerのJSON_QUERY()とJSON_VALUE():違いは何ですか?