我想连接不同行中特定列的数据。
数据是这样的:
id | 姓名 |
---|---|
1 | 杰克、约翰 |
2 | 约翰 |
3 | 约翰,朱莉 |
4 | 杰克 |
5 | 杰克,朱莉 |
我希望输出为
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;