Sql 用递归函数模拟群函数

Sql 用递归函数模拟群函数,sql,sql-server,function,recursion,sql-server-2012,Sql,Sql Server,Function,Recursion,Sql Server 2012,我有一张像这样的桌子 ID NAME 1 STALIN 2 MERWIN 1 AMALA 1 RAYON 我想把这本书作为一本书出版 ID NAME 1 STALIN,AMALA,RAYON 2 MERWIN 如何使用递归函数执行此操作您可以使用XML路径执行此操作 SELECT ID, NAME = STUFF((SELECT ', ' + NAME FROM your_table b WHERE b.ID = a.ID FOR XML

我有一张像这样的桌子

ID NAME
1  STALIN
2  MERWIN
1  AMALA
1 RAYON
我想把这本书作为一本书出版

ID NAME
1 STALIN,AMALA,RAYON
2 MERWIN

如何使用递归函数执行此操作

您可以使用
XML路径执行此操作

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


参见案例3。它解释了为什么在递归游标上使用XML路径。

您可以使用
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

您正在使用哪些DBMS?标记您正在使用的DBMS(即
MySQL
SQL Server
,等等)。是的。使用SQL Server递归函数SQL Server的哪个版本?@barbaros:我想使用递归函数来实现这一点。