将所有行推入单行和列

mam*_*esh 2 sql sql-server sql-server-2005

我有以下查询:

SELECT 
    '' + CONVERT(VARCHAR(MAX),c.ClientId) + ','
FROM [dbo].[tblClient] c
Run Code Online (Sandbox Code Playgroud)

这将返回17,000 +行.有没有办法让所有这些行返回1值?例如:

 6A7A24CD-061C-4653-9790-882D90F81E1D,0980722E-6E96-4498-B3BB-BFB4CA60EAC6,etc etc etc.
Run Code Online (Sandbox Code Playgroud)

我试图用它作为测试参数.

SQL*_*ace 5

这对你有用吗?

DECLARE @v VARCHAR(MAX)
SELECT @v = ''

SELECT 
    @v = @v +  CONVERT(VARCHAR(MAX),c.ClientId) + ','
FROM [dbo].[tblClient] c
WHERE c.ClientId IS NOT NULL


SELECT  @v 
Run Code Online (Sandbox Code Playgroud)

注意:注意,如果添加ORDER BY,则无法保证对其进行排序,在这种情况下使用xml路径,如Remus的回答所示

另请参见:将多行的值连接到一个已排序的列中