我在使用sql语句时遇到了困难。我有一个kpi(关键绩效指标),它可能也有一个上限和下限。设置kpi的人可以选择同时设置这两个,或者两者都不设置。我想在 Jmeter 板上显示一条消息,一眼就知道值是否在界限内。出于我们的目的,可以在边界中考虑空值,而不必具体说明哪个边界被打破。
所以基本上我想构造一个这样的语句:
Check if the kpi_lower_bound is null or not If it is not null, check that the kpi_value > kpi_lower_bound Check if the kpi_upper_bound is null or not If it is not null, check that the kpi_value < kpi_lower_bound If both statements pass or both are null, return "within bounds". If either statement fails, return "out of bounds."
我可以用这样的语句检查边界的两边
SELECT
IF(kpi_lower_bound IS NOT NULL, (IF(kpi_value < kpi_lower_bound,"Out of lower bounds","Within lower bounds")), "It's null") AS "lower bound break",
但我不知道如何将这样的多个if语句组合成一个大的条件检查。
任何帮助都将不胜感激。
2条答案
按热度按时间a2mppw5e1#
当你需要的时候试试这个
cuxqih212#
我们可以尝试使用的一个技巧是
COALESCE
并用以下逻辑替换缺少的边界:缺少下限默认值
2147483647
缺少上限默认为-2147483648
然后使用CASE
表达式:这里的诀窍是,当
kpi_lower_bound
是NULL
,替换为-2147483648
,即一个非常小的数字,低于这个数字我们不希望kpi_value
永远都够不着。这对任何人都有免费通行证的作用kpi_value
可能是NULL
,用于下限检查。同样的逻辑反过来适用于NULL
值和上限检查。