比较两组列之间的最小和最大数字

时间:2017-03-25 09:12:00

标签: oracle

id  pointA1   pointA2  pointA3  pointB1  pointB2  pointB3

1   12.2      10       11.1     2.2      3.03     9  
2   102.2     10       -11.1    2.2      102.2    9
3   102.2     10       -11.1    -2.2     101.2    0
4   102.2     15       999      4        14       0.2     

我有这个数据的“季节”表,有两个类型/组的列“A”和“B”(每个类型3个,在此示例数据中)。

我需要:如果“A”类型列中的任何值超过“B”类型列中的任何值,则在新“result_column”中为此行获取“1”。

示例:对于id = 1和id = 4行,我们必须得到这个值,因为任何值,即使是“pointA1,pointA2,pointA3”中的最小值超过“pointB1,pointB2 pointB3”中的任何最高值

结果应该是

id  pointA1   pointA2  pointA3  pointB1  pointB2  pointB3 result_column

1   12.2      10       11.1     2.2      3.03     9       1
2   102.2     10       -11.1    2.2      102.2    9
3   102.2     10       -11.1    -2.2     101.2    0
4   102.2     15       999      4        14       0.2     1

尝试使用最小和最大功能,但我陷入困境......

2 个答案:

答案 0 :(得分:4)

    select season.* ,   
    CASE WHEN 
        least(pointA1, pointA2, pointA3) >  greatest(pointB1, pointB2, pointB3) then 1
    END AS result_column
    from season
    order by id

答案 1 :(得分:3)

select
   ...
   case when least(a1, a2, a3) > greatest(b1, b2, b3) then 1 end as result_column
from ...