如何比较多列的值?

时间:2012-10-09 11:57:44

标签: oracle oracle11g compare

假设所有值列具有相同的数据类型。我想在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声明的路径开始,但是这很快就搞乱了。我厌倦了一个子选择,但没有让它工作。是否有一种干净的方法可以将多个列值相互比较?

1 个答案:

答案 0 :(得分:5)

在这种情况下,greatest函数将完成工作。

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