如何在 BigQuery 中将不同行的数据连接成一行

问题描述 投票:0回答:2

我想连接不同行中特定列的数据。

数据是这样的:

id 姓名
1 杰克、约翰
2 约翰
3 约翰,朱莉
4 杰克
5 杰克,朱莉

我希望输出为

Jack, John, Julie
。每个名字都应该是独一无二的。

我尝试使用

string_agg(distinct Name)
,但结果是(
Jack, John, John, John, Julie, Jack, Jack, Julie
)。

如何解决这个问题并获得想要的结果?

sql google-bigquery concatenation string-aggregation
2个回答
1
投票

使用下面

select string_agg(distinct trim(nm), ', ') as names
from your_table, unnest(split(name)) nm  

如果应用于您问题中的样本数据 - 输出为

enter image description here


0
投票

这对你有用吗?如果有效请标记为答案

WITH DistinctValues AS(
SELECT DISTINCT
       V.DenormalisedData,
       SS.[Value]
FROM (VALUES((Select SUBSTRING(( SELECT ',' + trim(Name) AS 'data()' FROM TableName FOR XML PATH('') ), 2 , 9999))))V(DenormalisedData)
     CROSS APPLY STRING_SPLIT(V.DenormalisedData,',') SS)


SELECT STRING_AGG(DV.[Value],',') AS RedenormalisedData
FROM DistinctValues DV
GROUP BY DenormalisedData;
© www.soinside.com 2019 - 2024. All rights reserved.