case when 语句在 bigquery 中不起作用

Ali*_*ork 1 google-bigquery

当我执行 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 类型。

Mik*_*ant 7

您的代码的问题在于 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)