在子查询中合并SQL行



我正在尝试使用BigQuery上的两个表。从表1中,我想找到所有记录的登录ID;"世界";,然后根据每个登录号,我想创建一个列,每个名称都在一行中。不幸的是,当我运行这个:

Select name
From `table2` 
Where acc IN (Select acc
From `table1`
WHERE source = 'World')

而不是得到这样的东西:

>td style="text-align:right;">TedChrisack/td>
Acc1Acc2ACC 3
Jeff杰夫
Rob
Jack

这不是您所问问题的直接答案。通常,处理多行比处理多列更容易。

因此,我建议您将每个acc值放在一个单独的行中,然后将名称列为数组:

select t2.acc, array_agg(t2.name order by t2.name) as names
from `table2` t2
where t2.acc in (Select t1.acc
From `table1` t1
where t1.source = 'World'
)
group by t2.acc;

否则,仅命名结果集中的列就将面临挑战。

最新更新