表是:
+----+------+
| Id | Name |
+----+------+
| 1 | aaa |
| 1 | bbb |
| 1 | ccc |
| 1 | ddd |
| 1 | eee |
+----+------+
Run Code Online (Sandbox Code Playgroud)
所需输出:
+----+---------------------+
| Id | abc |
+----+---------------------+
| 1 | aaa,bbb,ccc,ddd,eee |
+----+---------------------+
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT ID,
abc = STUFF(
(SELECT ',' + name FROM temp1 FOR XML PATH ('')), 1, 1, ''
)
FROM temp1 GROUP BY id
Run Code Online (Sandbox Code Playgroud)
此查询正常运行.但我只需要解释它是如何工作的,或者是否有其他或简短的方法来做到这一点.
我很难理解这一点.
我有以下代码,它将为我的结果创建一个逗号分隔列表:
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+', ' ,'') + INSTITUTIONNAME
FROM EDUCATION
WHERE STUDENTNUMBER= '111'
SELECT @listStr
Run Code Online (Sandbox Code Playgroud)
问题在于它创建了一个大量逗号分隔的行.我需要它每行返回一个逗号分隔的列表.
所以,如果Simon已经成为2个机构的一部分,那么我希望:
"INSTITUTION1, INSTITUTION2"
Run Code Online (Sandbox Code Playgroud)
由于我没有提供where子句,我希望我的结果对于数据库中的每一行都显示如下.