5

我有以下查询效果很好,它将我所有的 id 放在逗号分隔的列表中。

DECLARE @tmp nvarchar(max)
SET @tmp = ''
        SELECT  @tmp = @tmp + cast(id as nvarchar(max)) + ', ' 
        FROM    dbo.property

我想按字母顺序排列我的 ID,但是当我按 p.Name 添加顺序时,它只会给出我的前一个结果。

我怎样才能调整我的查询来完成这个?

4

2 回答 2

5

这真的不行吗?

DECLARE @tmp nvarchar(max);
SET @tmp = '';
SELECT  @tmp = @tmp + cast(id as nvarchar(max)) + ', ' 
FROM    dbo.property p
order by p.name;

在任何情况下,您都可以使用此方法:

select @tmp = stuff((select ', ', cast(id as nvarchar(max))
                     from db.property p
                     order by p.name
                     for xml path ('')
                    ), 1, 2, '');
于 2013-08-29T11:49:48.363 回答
2

解决方案:

    SELECT  (cast(ID as nvarchar(max)) + ', ')  AS [text()]
      FROM    dbo.property
  ORDER BY ID
    FOR XML PATH ('')
于 2013-08-29T11:58:58.680 回答