【问题标题】:How to compare values across multiple columns?如何比较多列的值?
【发布时间】:2012-10-12 01:05:02
【问题描述】:

假设所有值列具有相同的数据类型。我想要 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 语句,但很快就变得一团糟。我厌倦了一个子选择,但未能让它发挥作用。有没有一种干净的方法可以将多个列值相互比较?

【问题讨论】:

    标签: oracle oracle11g compare


    【解决方案1】:

    在这种情况下,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 
    

    【讨论】:

    • 这正是我一直在寻找的。在寻找解决方案的过程中错过了最重要的功能,我觉得有点傻。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多