Transact-SQL逗号分隔值未排序

时间:2015-04-13 20:37:54

标签: sql sql-server tsql

我试图控制此查询的输出,以返回从较低值到较高值的值。正如你在下面的结果的最后一行所看到的那样,我得到16,15,1作为结果,但我需要得到1,15,16作为结果。

以下是我目前正在使用的脚本。我将不胜感激任何帮助。提前谢谢。

SELECT STUFF ((SELECT ',' + CONVERT(varchar(max), UserId)
FROM MessageRecipients mr2
WHERE mr1.ConversationId = mr2.ConversationId FOR xml path('')), 1, 1,'') AS 'Result'
FROM MessageRecipients mr1
GROUP BY ConversationId

这是我使用当前脚本获得的结果(列名'结果'):

1,19
1,15
16,15,1

1 个答案:

答案 0 :(得分:1)

只需将ORDER BY添加到内部SELECT:

SELECT STUFF (
    (SELECT ',' + CONVERT(varchar(max), UserId)
        FROM MessageRecipients mr2
        WHERE mr1.ConversationId = mr2.ConversationId 
        ORDER BY UserId
        FOR xml path(''))
    , 1, 1,'') AS 'Result'
FROM MessageRecipients mr1
GROUP BY ConversationId