简体   繁体   English

在 SQL Server 2017 中使用 STRING_AGG 获取唯一值

[英]Get unique value using STRING_AGG in SQL Server 2017

The following query:以下查询:

SELECT T1.REPORTED_NAME, STRING_AGG(CAST(T1.ENTRY AS NVARCHAR(MAX)),',') AS Average_Str
FROM Table1 T1
INNER JOIN Table2 T2 ON T1.ID = T2.ProdID
WHERE T1.ENTRY like '%[A-Za-z]%'
GROUP BY T1.REPORTED_NAME
ORDER BY T1.REPORTED_NAME

Returns:返回:

REPORTED_NAME       Average_Str
Report_1            Failed,Failed,Failed,Failed,Failed,
Report_2            Passed,Passed,Passed

I would like my final output to have only unique value as below我希望我的最终输出只有如下唯一值

REPORTED_NAME       Average_Str
Report_1            Failed
Report_2            Passed

Thank you in advance for your help预先感谢您的帮助

You can go for first getting unique values and then applying string aggregate like below:您可以先获取唯一值,然后应用如下所示的字符串聚合:

;WITH CTE_UniqueValues
(
SELECT Reported_Name, Entry, MAX(ID) AS ID
FROM Table1
GROUP BY Reported_Name, Entry
)
SELECT T1.REPORTED_NAME, STRING_AGG(CAST(T1.ENTRY AS NVARCHAR(MAX)),',') AS Average_Str
FROM CTE_UniqueValues T1
INNER JOIN Table2 T2 ON T1.ID = T2.ProdID
WHERE T1.ENTRY like '%[A-Za-z]%'
GROUP BY T1.REPORTED_NAME
ORDER BY T1.REPORTED_NAME

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM