如何在BigQuery的SELECT语句中实现嵌套WHEN语句?
正确SQL写法及说明
你的原有写法不符合CASE表达式的标准语法,缺失第一层判断的返回分支、也没有闭合CASE结构,运行会直接报错。
你需要的嵌套判断逻辑可以用以下两种写法实现:
- 写法1:条件拼接(更简洁,可读性更高)
CASE WHEN order_1 = 0 AND next = 0 THEN (order_1 - 5 = order_2) WHEN order_1 = 0 AND next <> 0 THEN (order_1 = next) -- 可在此处补充 order_1 不等于 0 时的返回逻辑,否则默认返回NULL -- ELSE 自定义默认值 END AS is_combined
- 写法2:嵌套CASE结构(完全匹配你要求的嵌套WHEN逻辑)
CASE WHEN order_1 = 0 THEN CASE WHEN next = 0 THEN (order_1 - 5 = order_2) ELSE (order_1 = next) END -- 可在此处补充 order_1 不等于 0 时的返回逻辑,否则默认返回NULL -- ELSE 自定义默认值 END AS is_combined
补充说明:如果你的数据库不支持直接返回布尔值作为查询结果,可以把布尔判断包裹一层CASE WHEN 条件 THEN 1 ELSE 0 END转为1/0的数值类型使用。
内容的提问来源于stack exchange,提问作者Grzegorz Gabrychowicz
相关产品推荐
相关产品推荐

