我有一张类似的桌子
ID NAME
1 STALIN
2 MERWIN
1 AMALA
1 RAYON
我希望退出
ID NAME
1 STALIN,AMALA,RAYON
2 MERWIN
如何使用递归函数
答案 0 :(得分:2)
您可以使用XML Path
SELECT ID, NAME =
STUFF((SELECT ', ' + NAME
FROM your_table b
WHERE b.ID = a.ID
FOR XML PATH('')), 1, 2, '')
FROM your_table a
GROUP BY ID
Follow this link并查看情况3。它说明了为什么在递归游标上使用XML路径。
答案 1 :(得分:0)
您可以使用FOR XML PATH
来获得结果:
例如:
DECLARE @EXAMPLE TABLE (ID int, NAME nvarchar(10))
INSERT @EXAMPLE VALUES (1,'STALIN'),(2,'MERWIN'),(1,'AMALA'),(1,'RAYON')
SELECT
ID,
SUBSTRING(NAME,0,LEN(NAME)) AS NAME
FROM ( SELECT DISTINCT
T1.ID,
STUFF(( SELECT DISTINCT '' + t2.NAME + ','
FROM @EXAMPLE T2
WHERE T1.ID = T2.ID
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)')
,1,0,'') NAME
FROM @EXAMPLE t1) AS info