我如何联接两个表并创建一个用逗号分隔的值的附加列

问题描述 投票:0回答:3

除了CRUD查询外,我对SQL没有太多经验;如果这很琐碎,请原谅我。我正在尝试连接两个表,并在结果中创建一系列带有逗号分隔值的附加列。

表1

enter image description here

表2

enter image description here

我可以使用表从表2中获取逗号分隔的值

DECLARE @tmp varchar(MAX)
SET @tmp = ''
SELECT @tmp = @tmp + CONVERT(VARCHAR(10), [materialTypeID])  + ', '
FROM [industryActivityMaterials] 
WHERE typeID = 1145 AND activityID =  1
SELECT SUBSTRING(@tmp, 0, LEN(@tmp)) AS materialsRequired

enter image description here

我不知道如何将typeID上的表连接在一起以包含一组包含materialsReguired列的结果。

sql sql-server
3个回答
1
投票

您可以加入,汇总和使用汇总函数string_agg()生成逗号分隔的列表。从SQL Server 2017开始,此功能可用。


0
投票

在2016 sql server版本以下,您可以使用xml路径按字符串concat进行分组


0
投票

注意,无论采用哪种方法,您都可能会发现相关子查询比大聚合更简单:

© www.soinside.com 2019 - 2024. All rights reserved.