1

すべての値列のデータ型が同じであると想定します。SELECT クエリの結果の id を持つすべての値の中で最も高い値が必要です。

テーブル構造:

table_a: id, value1, value2, value3, value4, value5

サンプルデータ:

id, value1, value2, value3, value4, value5
2, 125, 256, 133, 400, 67
3, 14, 14, 14, 3, 6
4, 325, 441, 441, 975, 3

望ましい結果の例:

id, highest_value
2, 400
3, 14
4, 975

私は CASE ステートメントのパスをたどり始めましたが、それはすぐに面倒になりました。サブセレクトにうんざりしましたが、それを機能させることができませんでした。複数の列の値を互いに比較するきれいな方法はありますか?

4

1 に答える 1

5

この場合、最大の関数が機能します。

with t1(id1, val1, val2, val3, val4, val5) as
(
  select 2, 125, 256, 133, 400, 67 from dual union all
  select 3, 14,  14,  14,  3,   6  from dual union all
  select 4, 325, 441, 441, 975, 3  from dual
)

select id1 
     , greatest(val1, val2, val3, val4, val5) Res
  from t1

結果:

Id1 Res 
---------------
2   400 
3   14 
4   975 
于 2012-10-09T12:00:57.503 に答える