BigQuery中如何在CASE表达式中使用不同列?
SQL CASE表达式多列条件判断问题解决
问题原因
你使用的是简单CASE语法(CASE columnA WHEN ...),这种写法仅能针对columnA单列的值做匹配判断,无法结合其他列的条件,这就是查询报错的核心原因。
正确实现方案
改用搜索型CASE表达式,不指定初始匹配列,直接在每个WHEN子句中编写完整的多列组合条件即可:
SELECT columnA, columnB, CASE WHEN columnA = 'true' AND columnB = 'false' THEN 'A' WHEN columnA = 'true' AND columnB = 'true' THEN 'B' ELSE 'C' END AS result FROM your_table; -- 替换为你的实际表名
优化写法(若列是布尔类型)
如果columnA和columnB实际是布尔类型(而非字符串'true'/'false'),可以简化条件表达式,无需引号包裹:
SELECT columnA, columnB, CASE WHEN columnA AND NOT columnB THEN 'A' WHEN columnA AND columnB THEN 'B' ELSE 'C' END AS result FROM your_table;
执行结果验证
运行上述查询后,将得到你期望的输出:
columnA columnB result true false A true true B false false C false true C
内容的提问来源于stack exchange,提问作者peggy
相关产品推荐
相关产品推荐

