簡體   English   中英

在 BigQuery 中將不同行的數據合並為一個

[英]Concat data from different rows into one in BigQuery

我想從存在於不同行中的特定列中連接我的數據。

數據是這樣的:

id | Name |
1 | Jack, John |
2 | John |
3 | John, Julie |
4 | Jack | 
5 | Jack, Julie |

我想要 output 作為Jack, John, Julie 每個名字都應該是唯一的。

我嘗試使用string_agg(distinct Name) ,但結果顯示為( Jack, John, John, John, Julie, Jack, Jack, Julie )。 我怎樣才能解決這個問題並獲得想要的結果?

提前致謝

這對你有用嗎? 如果有效,請標記為答案

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;

下面使用

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

如果應用於您問題中的示例數據 - output 是

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM