SQL Server STRING_AGG

参考: 

How To Use STRING_AGG – Concat Multiple Row Values In SQL Server

如果你想做 string.join(',', collection) 的话, 那么就可以使用 STRING_AGG 了

1. 简单用

SELECT STRING_AGG(Name, ',') AS NameStringList FROM Person

结果是: keatkeat, xinyao, mark

NULL 会被自动过滤掉, 如果你要自行处理 null 可以使用 ISNULL(Name, 'N/A') 之类的方式. 

2. 配合 group by

SELECT AGE, STRING_AGG(Name, ',') AS NameStringList FROM Person GROUP BY AGE

3. 再排序 

SELECT AGE, STRING_AGG(Name, ',') WITHIN GROUP (ORDER BY Name ASC) AS NameStringList FROM Person GROUP BY AGE

通过 WITHIN GROUP 还可以对结果再排序哦. 

4. 遇上 DISTINCT

如果出来的结果想要 distinct 的话

Produce DISTINCT values in STRING_AGG

Get unique values using STRING_AGG in SQL Server

如果不考虑性能的话, 我觉得简单粗暴的方式就是直接 SPLIT 然后 DISTINCT 再 JOIN 回去.

原文地址:https://www.cnblogs.com/keatkeat/p/15271686.html