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

如何在BigQuery中将不同行的指定列数据去重拼接为一行

解决多值列的唯一名字拼接问题

这个问题我之前也碰到过!核心问题在于你直接对整个Name单元格使用distinct,但每个单元格本身就包含逗号分隔的多个名字,distinct只会过滤完全重复的单元格内容,没法拆分里面的单个名字去重,所以才会出现重复的单个名字。

下面给你两种可行的解决方案:

方案一:针对固定分隔符(, )拆分去重

如果你的Name列里的名字都是用逗号加空格分隔的,可以直接用这个SQL:

SELECT string_agg(DISTINCT split_name, ', ') AS unique_names
FROM (
    -- 把每个单元格的名字拆成单独的行
    SELECT unnest(string_to_array(Name, ', ')) AS split_name
    FROM your_table_name -- 替换成你的表名
) AS split_names;

这段SQL的逻辑很简单:

  1. 子查询里用string_to_array把每个Name单元格转成数组,再用unnest把数组拆成单独的行,每个行对应一个名字;
  2. 外层查询对拆分后的单个名字做DISTINCT去重,最后用string_agg拼接成逗号分隔的字符串。

方案二:兼容多种分隔符(比如逗号后有无空格)

如果你的数据里存在逗号后没有空格的情况(比如偶尔出现Jack,John这种格式),可以加上trim来处理名字前后的空格:

SELECT string_agg(DISTINCT trim(split_name), ', ') AS unique_names
FROM (
    -- 先按逗号拆分,再用trim去掉每个名字的前后空格
    SELECT unnest(string_to_array(Name, ',')) AS split_name
    FROM your_table_name -- 替换成你的表名
) AS split_names;

这样不管是, 还是,作为分隔符,都能正确拆分并清理掉名字的多余空格,再去重拼接。

这两种方法都能得到你想要的Jack, John, Julie结果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 14:32:44