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
尝试使用最小和最大功能,但我陷入困境......
答案 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 ...