将列的所有行合并为单个值

mms*_*ann 1 sql t-sql sql-server sql-server-2008

我有一张名为Rule的表.

RuleId    Name
1          A1
2          A2
3          A3
.
.
.
Run Code Online (Sandbox Code Playgroud)

现在我希望所有的名字都是单一的结果.

可能会像 @allnames = A1,A2,A3

有人可以建议如何在不使用循环的情况下为此编写查询吗?

提前致谢...

Mah*_*mal 5

试试这个:

SELECT @allnames = STUFF((SELECT distinct ',' + Name
                      FROM table1
                      FOR XML PATH(''), TYPE
                     ).value('.', 'NVARCHAR(MAX)') 
                        , 1, 1, '');
Run Code Online (Sandbox Code Playgroud)