BigQuery中能否在单个CASE语句内实现双字段条件赋值?
BigQuery中多列条件赋值的解决方案
你不需要用同一个CASE语句处理两个列,因为单个CASE语句只能返回一个值,对应一个列的赋值逻辑。正确的做法是针对每个列分别编写独立的CASE语句,在SELECT语句中直接对已定义的列进行条件赋值,不会新增列。
示例SQL代码
SELECT -- 处理SalesNo列的条件赋值 CASE WHEN SalesNokey = '§§' THEN 'abc' WHEN SalesNokey = '200' THEN 'valid' -- 保留原有业务逻辑 ELSE SalesNo -- 其他情况保持原值 END AS SalesNo, -- 处理ErrorDesc列的条件赋值 CASE WHEN SalesNokey = '§§' THEN 'unknown value' WHEN SalesNokey = '200' THEN 'No error' -- 保留原有业务逻辑 ELSE ErrorDesc -- 其他情况保持原值 END AS ErrorDesc, SalesNokey -- 保留原列值 FROM `your-project.your-dataset.your-table`;
逻辑说明
- 针对
SalesNo和ErrorDesc各自编写CASE语句,当SalesNokey = '§§'时分别赋予目标值; - 完全保留你原有的业务规则(比如
SalesNokey=200时的赋值逻辑); - 所有不满足条件的场景,通过
ELSE 原列名保持原有数据,不会破坏现有逻辑; - 这种写法完全符合“不新增列”的要求,只是对已定义的列重新计算取值。
内容的提问来源于stack exchange,提问作者Codepy
相关产品推荐
相关产品推荐

