如何根据ID合并行,

时间:2019-05-30 19:32:26

标签: sql google-bigquery

在bigquery中使用标准SQL:

给出一个表格,例如:数值已被计算,因此仅出现一次

| id | key | value |
--------------------
| 1 | read |  aa   |
| 1 | read |  bb   |
| 1 | name |  abc  |
| 2 | read |  bb   |
| 2 | read |  cc   |
| 2 | name |  def  |
| 2 | value|  some |
| 3 | read |  aa   | 

我如何做到每一行都是一个用户及其各自的值?例如巢

因此表格如下:

| id | key | value |
--------------------
| 1 | read |  aa   |
|   | read |  bb   |
|   | name |  abc  |
| 2 | read |  bb   |
|   | read |  cc   |
|   | name |  def  |
|   | value|  some |
| 3 | read |  aa   | 

我尝试在该列上使用ARRAY_AGG,最终列出该列的所有值。

我只需要让每行作为具有多个值的单个用户,如上所示。

就像BigQuery一样,这就是我想要的样子:

1 个答案:

答案 0 :(得分:2)

以下是用于BigQuery标准SQL

#standardSQL
SELECT id, ARRAY_AGG(STRUCT(key AS key, value AS value)) params
FROM `project.dataset.table`
GROUP BY id  

如果要应用于您的示例数据-结果为

enter image description here