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

如何在BigQuery中连接具有一对多关系的两张表

BigQuery 表连接并生成透视表解决方案

表结构说明

学生表

学号姓名
101张三
102李四
103王五

成绩表

学号科目成绩
101语文85
101数学90
102语文78
103数学92

目标表

学号姓名语文数学
101张三8590
102李四78null
103王五null92

实现SQL语句

使用BigQuery的PIVOT函数结合表关联即可生成目标结果:

WITH student_scores AS (
    SELECT 
        s.学号,
        s.姓名,
        sc.科目,
        sc.成绩
    FROM `你的项目名.数据集名.学生表` s
    LEFT JOIN `你的项目名.数据集名.成绩表` sc
        ON s.学号 = sc.学号
)
SELECT *
FROM student_scores
PIVOT (
    MAX(成绩) FOR 科目 IN ('语文' AS 语文, '数学' AS 数学)
)
ORDER BY 学号;

关键说明

  1. 用LEFT JOIN关联两张表,确保所有学生记录都被保留,无对应科目成绩时显示null
  2. PIVOT函数将科目列的离散值(语文、数学)转为独立列,通过MAX(成绩)聚合获取对应分数(因每个学生单科目仅一条成绩,MAX等价于直接取值)
  3. 按学号排序保证结果顺序与目标表一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:15:41