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

如何在GCP SQL单查询中同时实现多个STRING_AGG函数聚合

解决方法

你可以通过条件聚合的方式,在同一个STRING_AGG函数里针对不同的action值进行筛选,这样就能在同一查询中同时生成"添加""更新""删除"对应的产品聚合列。

修改后的GCP BigQuery SQL语句如下:

CREATE OR REPLACE TABLE dummy_table AS
SELECT
  a.order,
  STRING_AGG(CASE WHEN b.action = 'Add' THEN b.products END, ', ') AS products_added,
  STRING_AGG(CASE WHEN b.action = 'Update' THEN b.products END, ', ') AS products_updated,
  STRING_AGG(CASE WHEN b.action = 'Delete' THEN b.products END, ', ') AS products_deleted
FROM
  [table with orders] a
INNER JOIN
  [table with orders, products and actions] b
ON
  a.order = b.order
GROUP BY
  a.order;

关键说明:

  • 移除原查询中WHERE b.action = 'Add'的过滤条件,确保所有操作类型的数据都被纳入聚合范围
  • 每个STRING_AGG函数内部通过CASE语句精准筛选对应操作的产品,不符合条件的行返回NULL,而STRING_AGG会自动忽略NULL值,不会干扰结果
  • 若某订单无对应操作记录(如无删除行为),对应列会显示NULL,可通过IFNULL(STRING_AGG(...), '')将其替换为空字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:13:13