我在语句时执行以下错误消息:
No matching signature for operator CASE for argument types: BOOL, FLOAT64,
STRING at [10:1]
声明是:
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
我错过了什么。 google bigquery还没有完全处理案件呢?
请记住a.i_sec_out_to_auth是我的数据集中float类型的列。
答案 0 :(得分:1)
你的代码的问题是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
或
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