当我执行 case when 语句时,收到以下错误消息:
No matching signature for operator CASE for argument types: BOOL, FLOAT64,
STRING at [10:1]
Run Code Online (Sandbox Code Playgroud)
该声明是:
case when a.datetime between '2015-11-01' and '2016-10-31' then
a.i_sec_out_to_auth else 'NA' end as PY_resp,
case when a.datetime between '2016-11-01' and '2017-10-31' then
a.i_sec_out_to_auth else 'NA' end as CY_resp
Run Code Online (Sandbox Code Playgroud)
我是不是错过了什么。谷歌bigquery还没有完全处理案例吗?
请记住,a.i_sec_out_to_auth 是我的数据集中的一列 float 类型。
您的代码的问题在于 THEN 和 ELSE 中的预期输出具有不同的数据类型(分别为 FLOAT 和 STRING)!但应该是一样的 试试下面
case when a.datetime between '2015-11-01' and '2016-10-31' then
a.i_sec_out_to_auth else 0 end as PY_resp,
case when a.datetime between '2016-11-01' and '2017-10-31' then
a.i_sec_out_to_auth else 0 end as CY_resp
Run Code Online (Sandbox Code Playgroud)
或者
case when a.datetime between '2015-11-01' and '2016-10-31' then
a.i_sec_out_to_auth else null end as PY_resp,
case when a.datetime between '2016-11-01' and '2017-10-31' then
a.i_sec_out_to_auth else null end as CY_resp
Run Code Online (Sandbox Code Playgroud)