将结果中的列耦合为一个用逗号

时间:2016-07-21 11:01:01

标签: sql-server sql-server-2008 sql-server-2005

我收到了这个查询

declare var1 nvarchar(100)
    set @var1='84,85,86'
    SET @sql = N'select a1 from DamDocumentType1 where documentid in (' + @var1 + ')' ;
    EXEC (@SQL);

我得到的结果是一列四行。例如:

二千〇一十四分之三

二千〇一十四分之四

二千〇一十四分之五

二千〇一十四分之八

如何将这几行放在一行和一列中并用逗号分隔。例如:

3 / 2014,4 / 2014,5 / 2014,8 / 2014

我使用那个查询的东西,所以现在我需要它修复做我刚刚解释的这个东西,我无法弄明白。你可以说我是新的:)

2 个答案:

答案 0 :(得分:0)

试试这个,

SET @sql = N'select STUFF((select '','' + cast(a1 as VARCHAR(10)) from DamDocumentType1 where documentid in (' + @var1 + ') FOR XML PATH('''')),1,1,'''') AS a1' ;

答案 1 :(得分:0)

试试这个,

DECLARE @var1 NVARCHAR(100)
DECLARE @SQL NVARCHAR(max) = ''

SET @var1 = '84,85,86'
SET @SQL = 'select stuff((
            SELECT '', '' + a1
            FROM DamDocumentType1
            where documentid in (' + @var1 + ')
            FOR XML path('''')
            ), 1, 2, '''')'

EXEC(@sql)