我有以下代码,它将为我的结果创建一个逗号分隔的列表:
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+', ' ,'') + INSTITUTIONNAME
FROM EDUCATION
WHERE STUDENTNUMBER= '111'
SELECT @listStr
问题在于它创建了一条巨大的逗号分隔线。我需要它每行返回一个逗号分隔的列表
因此,如果Simon
已经成为两个机构的一部分,那么我预计:
"INSTITUTION1, INSTITUTION2"
因为我没有提供where子句,所以我希望数据库中每一行的结果都是这样显示的
这适用于sql server 2016
对于Sql Server 2017及更高版本,您可以使用新的
STRING_AGG
函数https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql
也许更常见的用例是分组然后聚合,就像使用
SUM
、COUNT
或AVG
一样使用^{} -将条目转换为逗号分隔的字符串,使用STUFF()-修剪第一个逗号,如下所示,这将得到相同的逗号分隔结果
这是FIDDLE
相关问题 更多 >
编程相关推荐