BigQuery中如何对指定国家分组的特定列应用小写转换?
现有语句的问题
你的查询存在两个核心错误,导致执行结果不符合预期:
CASE表达式缺失ELSE分支:SQL中如果CASE语句的所有WHEN条件都不满足,且没有定义ELSE返回值,会默认返回NULL——也就是说非FR、ES国家的记录,这个计算列会返回空值,而不是你预期保留的原product_name内容。- 字段冗余重复:你同时查询了原生的
product_name字段和CASE生成的计算列,最终返回结果会多出一列,并没有实现「直接替换原product_name字段值」的需求。
修正后的语句
直接把原查询里原生product_name的位置,替换为补全了ELSE逻辑的CASE表达式,给计算列别名product_name即可;另外注意timestamp是多数SQL引擎的保留关键字,建议加转义符避免语法报错:
SELECT id ,brand ,cern ,cern_3 ,backpack ,qutoation ,CASE WHEN country_code IN ('FR', 'ES') THEN LOWER(product_name) ELSE product_name END AS product_name ,category ,country_code ,`timestamp` FROM table.name
内容的提问来源于stack exchange,提问作者rucola
相关产品推荐
相关产品推荐

