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

如何在BigQuery中将同id的多行数据合并为单行?

BigQuery 多行合并为单行解决方案

针对你的需求,可直接使用以下查询语句实现,无需手动罗列全部30余列:

SELECT 
  * EXCEPT(email, emp_type),
  STRING_AGG(DISTINCT emp_type, ', ') AS emp_type
FROM 
  `你的项目ID.你的数据集名.你的表名`
GROUP BY ALL

语法说明

  • * EXCEPT(email, emp_type) 会自动排除不需要的email列和待特殊处理的emp_type列,不管表有多少列都不需要手动逐一写列名,适配表结构变动
  • STRING_AGG(emp_type, ', ') 实现同id下多个emp_type值合并为逗号分隔的字符串,若不需要对emp_type去重,删掉参数里的DISTINCT即可
  • GROUP BY ALL是BigQuery专属语法糖,会自动将SELECT子句中所有非聚合字段作为分组依据,避免手动罗列数十个分组键的繁琐操作

特殊场景适配

如果同id下除emp_type外的其他字段也存在不同值,需要指定取值规则(比如取最新一条记录的字段值),可使用以下写法:

WITH sorted_tbl AS (
  SELECT
    *,
    -- 按业务需要的排序规则排序,比如按更新时间倒序,取最新记录的非emp_type字段值
    ROW_NUMBER() OVER(PARTITION BY id ORDER BY update_time DESC) AS rn
  FROM `你的项目ID.你的数据集名.你的表名`
)
SELECT 
  * EXCEPT(email, emp_type, rn),
  STRING_AGG(DISTINCT emp_type, ', ') OVER(PARTITION BY id) AS emp_type
FROM sorted_tbl
WHERE rn = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:57:03