操作员CASE没有匹配的签名;所有 THEN/ELSE 参数必须可强制转换为通用类型,但发现 ARRAY<STRING>、STRING;

问题描述 投票:0回答:1

我在尝试使用以下逻辑时收到作为问题提到的错误,

Select case when T2.val is not null then T2.CD ELSE CASE WHEN T3.VAL <> '~' OR T3.VAL = 'FM' THEN ['F','M'] ELSE T3.VAL END  END AS FVAL FROM (SELECT * FROM TABLE3) T3 LEFT JOIN (SELECT * FROM TABLE2) T2 ON T2.VAL = T3.VAL;

注意 - 上列中提到的所有列都是字符串数据类型

Select case when T2.val is not null then T2.CD ELSE CASE WHEN T3.VAL <> '~' OR T3.VAL = 'FM' THEN ['F','M'] ELSE T3.VAL END  END AS FVAL FROM (SELECT * FROM TABLE3) T3 LEFT JOIN (SELECT * FROM TABLE2) T2 ON T2.VAL = T3.VAL;

当满足上述条件时,我想将 FVAL 列中的值填充为 F,M。

提前感谢您的帮助

google-bigquery
1个回答
0
投票

这部分:THEN ['F','M'] 它返回一个字符串数组,而其他部分则输出字符串。您需要有一致的输出类型,无论是数组还是字符串

© www.soinside.com 2019 - 2024. All rights reserved.