我在使用if语句创建以下逻辑时遇到麻烦。我认为这类似于excel中的嵌套if语句,但我不确定如何在MySQL中进行处理。
我有一个字段称为程序包,2019年价格和2020年价格,状态和细分。
对于每笔交易,如果“日期”字段= <2019,请使用“ 2019价格”字段;如果“日期”字段> = 2020,请使用“ 2020价格”字段。作为此规则的例外,如果State ='CO'和Segment ='promo',请使用“ 2019 Price”字段。
我开始在下面编写if语句。我只是不确定如何将例外添加到规则中:
IF(`Date` >= '2020-01-01', `2020 EFT`, `2019 EFT`) as `Price`
任何帮助将不胜感激,并将其添加到我的sql工具带中!谢谢!
使用CASE
来实现多个条件。它按顺序测试它们,因此您可以将异常放在首位。
CASE WHEN State = 'CO' AND Segment = 'promo' THEN `2019 EFT`
WHEN Date >= '2020-01-01' THEN `2020 EFT`
ELSE `2019 EFT`
END AS Price
您也可以将条件与OR
组合。
IF(Date < '2020-01-01' OR (State = 'CO' AND Segment = 'promo'), `2019 EFT`, `2020 EFT`) AS Price
我建议您在组合AND
和OR
条件时始终使用括号,因为默认优先级并不总是您所期望的。