我需要执行一个“分组依据”的bigquery /标准SQL语句(或一系列语句),并为每个组(不计数)返回不同值的列表。
例如对于标题为H1,H2的表
H1 H2
--|--
a a
a b
a c
b x
b x
b y
“分组依据” H1的预期结果:
a->a,b,c
b->x,y
答案 0 :(得分:1)
您可以使用STRING_AGG()
-在此处找到 reference
SELECT H1, STRING_AGG(H2) AS H2
FROM tablename
group by H1
答案 1 :(得分:1)
我建议您使用array_agg()
:
select h1, array_agg(h2)
from t
group by h1;
如果您使用的是BigQuery,请学习使用数组。它们非常强大。
答案 2 :(得分:1)
如果您使用的是array_agg
,请不要忘记使用DISTINCT
select h1, array_agg(DISTINCT h2)
from t
group by h1;
答案 3 :(得分:0)
使用BigQuery数组。
select
h1,
array_agg(distinct h2) as items
from `dataset.table`
group by h1
如果您要再次展平上述不同的分组:
select h1, item from (
select
h1,
array_agg(distinct h2) as items
from `dataset.table`
group by h1
), unnest(items) as item