将Excel嵌套IF公式转换为SQL的CASE或更高效语句求助
Excel嵌套IF公式转SQL CASE语句方案
原公式逻辑拆解
完全对齐你提供的Excel公式判断顺序,逻辑如下:
- 外层判断:如果B字段(对应Excel的B11)非空,直接返回B的值
- B为空时:
- 如果R字段值为
STORY.COM或EXPERIENCE,返回FALSE - 否则判断AE字段:
- AE为
Yes时返回TRUE - AE为
Unknown时:- D字段为空的话,E为空返回
FALSE,否则返回E的值 - D字段非空直接返回D的值
- D字段为空的话,E为空返回
- AE为其他值返回
FALSE
- AE为
- 如果R字段值为
等效SQL CASE语句
CASE语句是SQL原生语法,执行效率为最优水平,没有额外计算开销。以下写法默认Excel空单元格对应SQL的NULL,如果你的表中存储的是空字符串'',把对应IS NULL替换为= ''即可:
CASE WHEN B IS NOT NULL THEN B WHEN R IN ('STORY.COM', 'EXPERIENCE') THEN FALSE WHEN AE = 'Yes' THEN TRUE WHEN AE = 'Unknown' THEN CASE WHEN D IS NOT NULL THEN D WHEN E IS NOT NULL THEN E ELSE FALSE END ELSE FALSE END AS 自定义结果字段名
适配注意事项
- 如果你使用的SQL方言不支持布尔类型(比如部分旧版本数据库需要用数字代指布尔值),把语句里的
FALSE替换为0、TRUE替换为1即可 - 所有判断优先级和原Excel公式完全一致,不会改变输出结果
内容的提问来源于stack exchange,提问作者Veronica
相关产品推荐
相关产品推荐

