使用SELECT子句在逗号分隔列表中的ORDER BY

时间:2013-07-24 13:02:49

标签: sql sql-server sql-order-by delimited-text

我使用以下代码创建逗号分隔列表。

我希望列表的顺序按特定顺序排列:

USE AdventureWorks
GO
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' ,'') + Name
FROM Production.Product
SELECT @listStr
GO

当我尝试时

USE AdventureWorks
GO
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' ,'') + Name
FROM Production.Product
ORDER BY sortOrder
SELECT @listStr
GO

显示错误incorrect syntax near ' ORDER'

3 个答案:

答案 0 :(得分:8)

使用STUFF()为您提供相同的逗号分隔结果

答案 1 :(得分:0)

我不相信你在获得标量值时可以下订单。你不应该需要它,因为你只期望一个值。

答案 2 :(得分:-1)

几乎每次在看似正确的脚本中看到“语法不正确”,或者已经从其他地方复制并粘贴时,您可能会在文本中看到无效的字符,并显示为空格。 我的建议是打开一个新窗口并手动重新键入整个查询,或者尝试猜测无效字符的清理位置。