如何在 SQL 服务器中将文本字段转换为一个?

How to pivot text fields into one in SQL Server?

给定以下简单示例

create table #example (
ProductID int,
ProductName varchar(100),
CustomerID int
)

insert #example values 
    (1,'Product 1',100),
    (2,'Product 2',100),
    (3,'Product 3', 101),
    (3,'Product 3', 102)

我想查看包含 CustomerID、ProductNamesBought 的结果集,其中产品以逗号分隔。例如

CustomerID ProductNamesBought
========== ====================
100        Product 1, Product 2
101        Product 3
102        Product 3
SELECT  e.CustomerID, 
        STUFF((SELECT ','+ProductName FROM #example WHERE e.CustomerID = CustomerID FOR XML PATH('')),1,1,'') as ProductNamesBought
FROM #example e
GROUP BY e.CustomerID

输出:

CustomerID  ProductNamesBought
100         Product 1,Product 2
101         Product 3
102         Product 3