5

我在 sql server 中有一个表,其中有一些值。例如如下,

StationId
-----
3
11
4

我写了一个如下查询,

select  STUFF((SELECT distinct (',' + QuoteName(c.StationId))
            FROM Analytics c 
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)')
        ,1,1,'') 

其中输出如下:

[11],[3],[4]

现在我的要求是我需要输出为[3],[4],[11]. 所以当将查询重写为

select  STUFF((SELECT distinct (',' + QuoteName(c.StationId))
            FROM Analytics c ORDER BY c.StationId 
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)')
        ,1,1,'')

我低于异常

如果指定了 SELECT DISTINCT,则 ORDER BY 项目必须出现在选择列表中。

请给我一些建议。

4

1 回答 1

13

DISTINCT您可以通过删除并添加 aGROUP BY以与 一起使用来更改您的代码ORDER BY

select  STUFF((SELECT (',' + QuoteName(c.StationId))
            FROM Analytics c 
            group by c.StationId
            ORDER BY c.StationId 
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)')
        ,1,1,'')

请参阅带有演示的 SQL Fiddle

于 2013-10-31T13:24:35.420 回答