我有这个问题:
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] 处只有一个输出列”
我试图改变输入的顺序,但没有改变
您可以改用此查询:
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
的最大值。
您可以为此使用子查询,因为 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