IN 类型的子查询必须在 [4:3] 处只有一个输出列

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

我有这个问题:

SELECT *
FROM `tlp-dataplatform-prod.published_kpi.UCV*`
WHERE (customer_code, _TABLE_SUFFIX) IN (
  SELECT customer_code, MAX(_TABLE_SUFFIX) AS max_suffix
  FROM `tlp-dataplatform-prod.published_kpi.UCV*`
  GROUP BY 1
)

此查询使用子查询首先使用 MAX() 函数和 GROUP BY 子句查找每个 customer_code 的最大 _TABLE_SUFFIX。然后外部查询过滤结果以仅包括 (customer_code, _TABLE_SUFFIX) 对与子查询返回的值匹配的行。 这实际上只返回每个 customer_code 具有最大 _TABLE_SUFFIX 的行,同时仍然从表中选择所有列。

但它在 BigQuery 上返回了这个错误: “IN 类型的子查询必须在 [4:3] 处只有一个输出列”

我试图改变输入的顺序,但没有改变

sql google-cloud-platform google-bigquery
2个回答
0
投票

您可以改用此查询:

SELECT *
FROM `tlp-dataplatform-prod.published_kpi.UCV*` as u1
WHERE  _TABLE_SUFFIX = (
  SELECT MAX(_TABLE_SUFFIX) 
  FROM `tlp-dataplatform-prod.published_kpi.UCV*` as u2
  WHERE u2.customer_code = u1.customer_code
)

它检查

_TABLE_SUFFIX
是否是相应
customer_code
的最大值。


0
投票

您可以为此使用子查询,因为 Big Query 不支持多列

SELECT t1.* 
FROM tlp-dataplatform-prod.published_kpi.UCV t1
JOIN ( SELECT customer_code, MAX(_TABLE_SUFFIX) AS max_suffix FROMtlp-dataplatform-prod.published_kpi.UCV* GROUP BY 1 ) t2
ON t1.customer_code = t2.customer_code AND  t1._TABLE_SUFFIX = t2.max_suffix
© www.soinside.com 2019 - 2024. All rights reserved.