如何正确编写嵌套CASE WHEN语句实现多字段非空校验打标需求
正确SQL实现
你原有的SQL存在多处语法错误:code1字段后缺少逗号分隔、嵌套子查询会触发多值/多列返回报错、code 2中间存在多余空格无法匹配字段、建表语句未指定新表名。以下是符合需求的两种实现:
写法1:嵌套CASE WHEN(完全匹配你要求的嵌套逻辑)
CREATE TABLE *你的新表名* AS SELECT ID, code1, code2, CASE WHEN code1 IS NOT NULL THEN 'yes' ELSE CASE WHEN code2 IS NOT NULL THEN 'no' ELSE 'NA' END END AS *你的标签字段名* FROM *你的原表名*;
写法2:单层多条件CASE WHEN(逻辑完全等价,更简洁易读)
CREATE TABLE *你的新表名* AS SELECT ID, code1, code2, CASE WHEN code1 IS NOT NULL THEN 'yes' WHEN code2 IS NOT NULL THEN 'no' ELSE 'NA' END AS *你的标签字段名* FROM *你的原表名*;
两种写法的执行逻辑完全符合你的需求:
- 优先判断
code1是否非空,匹配直接返回yes,跳过后续所有判断- 若
code1为空,再判断code2是否非空,匹配返回no- 前两个条件均不满足(两个字段都为空),返回
NA
内容的提问来源于stack exchange,提问作者user584534
相关产品推荐
相关产品推荐

