我在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项必须出现在选择列表中。
请给我一些建议。
答案 0 :(得分:12)
您可以删除DISTINCT
并添加GROUP 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,'')