SQL - 从其他列创建一个逗号分隔的列

SQL - Make a comma delimited column from other columns

我正在尝试创建一个列,其中它是一个逗号分隔的其他列的列表,其中 id 相同。我如何获取当前的查询并更新它以获得我期望的输出?

T1

PK
1
2

T2

ID Name T1.PK
1 Apple 1
2 Pear 1
3 Orange 1
4 Cat 2
5 Dog 2

我希望我可以加入这些表并获得以下结果。

PK Name
1 Apple, Pear, Orange
2 Cat, Dog

我对如何完成这个有一个粗略的想法,但我没有看到如何分隔列表,而是我将每行得到 Apple、Pear、Orange、Cat、Dog,而不是将它们分开。这是我目前正在处理的查询。

select t1.PK,
stuff(
   (select distinct ', ' + Name
    from t2
    for XML PATH ("")), 1, 2, '') Name
from t1
left join t2
select t1.PK,
stuff(
   (select ', ' + Name
    from t2
    where t2.[t1.PK] = t1.PK 
    for XML PATH ('')), 1, 1, '') Name
from t1

我大约 12 年前回答过这个问题

在新的 SQL 服务器数据库中(自 SQL Server 2017 起),也可以使用 STRING_AGG 来达到此目的:

SELECT t1.pk, STRING_AGG (t2.name,', ') AS name
FROM t1 JOIN t2 ON t1.pk = t2.[t1.pk]
GROUP BY t1.pk;