【发布时间】:2021-11-06 09:53:37
【问题描述】:
我在 BigQuery 中有两个表,但我很难将一个表的内容正确连接到另一个表中。
第一个表的形式是(DataUsers):
| userID | name | lastName |
|---|---|---|
| us1 | John | Anders |
| us2 | Terry | Garcia |
第二个看起来像这样(DataInfo):
| userID | key | value |
|---|---|---|
| us1 | address1 | us1FirstHome |
| us2 | address1 | us2FirstHome |
| us1 | address2 | us1SecondHome |
| us2 | address2 | us2SecondHome |
| us1 | address3 | us1ThirdHome |
| us2 | address3 | us2ThirdHome |
由于存在键值关系,我想为每个键创建一列。
我已经尝试使用类似下一个的查询来加入表格:
SELECT
i.name,
i.lastname,
CASE WHEN u.key = 'address1' THEN u.value END AS address1 ,
CASE WHEN u.key = 'address2' THEN u.value END AS address2 ,
CASE WHEN u.key = 'address3' THEN u.value END AS address3 ,
FROM
`DataInfo` i
INNER JOIN
`DataUsers` u
ON
i.userID = u.userID
WHERE
(u.key="address1"
OR u.key="address2"
OR u.key="address3")
但是,结果是这样的表格:
| userID | name | lastname | address1 | address2 | address3 |
|---|---|---|---|---|---|
| us1 | John | Anders | us1FirstHome | null | null |
| us1 | John | Anders | null | us1SecondHome | null |
| us1 | John | Anders | null | null | us1ThirdHome |
| us2 | Terry | Garcia | us2FirstHome | null | null |
| us2 | Terry | Garcia | null | us2SecondHome | null |
| us2 | Terry | Garcia | null | null | us2ThirdHome |
而不是看起来像这样的预期表格:
| userID | name | lastname | address1 | address2 | address3 |
|---|---|---|---|---|---|
| us1 | John | Anders | us1FirstHome | us1SecondHome | us1ThirdHome |
| us2 | Terry | Garcia | us2FirstHome | us2SecondHome | us2ThirdHome |
- 什么是连接表的正确方法,而不是在 BigQuery 中获取空值?
- 有没有办法根据键自动创建列,这样就不必硬编码它们的名称?
非常感谢。
【问题讨论】:
标签: sql google-bigquery