You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery多列IN子查询报错:子查询仅允许单个输出列求助

解决方案:BigQuery获取每个客户最新表后缀的数据

你的查询逻辑没问题,但BigQuery的IN子查询不支持多列匹配,因此触发报错。以下两种可行方案可实现需求:

方案1:使用窗口函数(推荐)

窗口函数可直接在原数据集上标记每个客户的最新后缀行,无需额外关联,性能更优:

WITH latest_records AS (
  SELECT *,
    ROW_NUMBER() OVER (PARTITION BY customer_code ORDER BY _TABLE_SUFFIX DESC) AS rn
  FROM `tlp-dataplatform-prod.published_kpi.UCV*`
)
SELECT * EXCEPT(rn)
FROM latest_records
WHERE rn = 1
  • 逻辑说明:按customer_code分区,给每个分区内的行按_TABLE_SUFFIX降序编号,最新后缀的行编号为1,最后筛选出编号为1的行即可。

方案2:使用JOIN关联子查询

通过子查询获取每个客户的最大后缀,再与原表关联匹配:

SELECT t.*
FROM `tlp-dataplatform-prod.published_kpi.UCV*` t
JOIN (
  SELECT customer_code, MAX(_TABLE_SUFFIX) AS max_suffix
  FROM `tlp-dataplatform-prod.published_kpi.UCV*`
  GROUP BY customer_code
) s
ON t.customer_code = s.customer_code AND t._TABLE_SUFFIX = s.max_suffix
  • 逻辑说明:子查询先计算每个客户对应的最大_TABLE_SUFFIX,再通过JOIN匹配原表中客户代码和后缀都一致的行,得到目标数据。

内容的提问来源于stack exchange,提问作者Valerio Auricchio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:15:03