如何按另一列的特定ID连接一列?

时间:2019-04-30 17:02:17

标签: google-bigquery

我当前遇到的当前问题是,我的BigQuery实例中有两个特定的列,每个列都有ID,但是一个列比另一个列更静态。数据集看起来像这样:

     ID A          |           ID B
       1                       123
       1                       456
       1                       789
       2                       333
       2                       898
       2                       999
       3                       111
       3                       222
       3                       444

我不确定从哪里开始实际解决这个问题,因为我相信这是可能的,但可能不是。

我要完成的工作是使数据返回为:

     ID A       |       Result
      1             123; 456; 789;
      2             333; 898; 999;
      3             111; 222; 444;

这是我要查找的所有内容都由ID A进行汇总的结果,而ID B却被汇总但以';'分隔的结果。我将如何做到这一点?

如果需要进一步说明,请告诉我,我将尽力进一步解释。

-Maykid

1 个答案:

答案 0 :(得分:2)

使用STRING_AGG(DISTINCT ORDER BY)

SELECT id_a, STRING_AGG(DISTINCT id_b, '; ' ORDER BY id_b) result
FROM (
     SELECT 'a' id_a, 'b' id_b UNION ALL SELECT 'a', 'c'
)
GROUP BY id_a

enter image description here