微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CASE WHEN 错误 - 根据另一列的条件为列设置值

如何解决CASE WHEN 错误 - 根据另一列的条件为列设置值

我正在尝试编写一个 case when 语句,当连接 =“Snapchat”时将国家/地区名称设置为“美国”。但我不断收到以下错误

操作符 CASE 没有匹配的签名;所有 THEN/ELSE 参数都必须强制转换为通用类型,但发现:BOOL,STRING;实际参数类型 (WHEN THEN) ELSE: (BOOL BOOL) STRING at [4:5]

SELECT 
    date,app_name,case when lower(connection) like '%snapchat%' then country_name = 'United States' else country_name end as country,connection,platform,ad_type,cast(Ad_Requests as FLOAT64) as ad_requests,cast(Ad_Impressions as FLOAT64) as ad_impressions,cast(Ad_Revenue____ as FLOAT64) as ad_revenue
FROM `dataset`

有什么想法可以改进我的查询吗?提前致谢。

解决方法

你想要的样子:

SELECT . . . 
       (case when lower(connection) like '%snapchat%'
             then 'United States' 
             else country_name
        end) as country,

您的公式具有 then 子句的布尔结果。那会导致错误。但另外,它引用了可能不存在的列 country

,

您可以在下面使用

SELECT 
    . . . 
    IF(lower(connection) like '%snapchat%','United States',country_name) as country,. . .
FROM `dataset`

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。