Данные
Approval_ID
-----------
1
2
3
4
5
6
7
8
9
10
Запрос
DECLARE
@id varchar(8000)
SELECT @id = COALESCE(@id + ', ', '') + '[' + Approval_ID + ']'
FROM (
SELECT DISTINCT Approval_ID
FROM Gate_III_CS_Approval
) Y
Результат всегда
1,10,2,3,4,5,6,7,8,9
Я пытался добавить Order By
ORDER BY len(Approval_ID), Approval_ID
но есть ошибка
Предложение ORDER BY недопустимо в представлениях, встроенных функциях, производных
таблицы, подзапросы и общие выражения таблиц, если только не TOP, OFFSET
или FOR XML также указывается.
и я хочу получить такой результат
1,2,3,4,5,6,7,8,9,10
Что мне делать?
Обновление:
;with cte as (
SELECT DISTINCT Approval_ID
FROM Gate_III_CS_Approval
)
SELECT @id = STUFF(
(SELECT concat(',', '[' + Approval_ID + ']')
FROM cte ORDER BY len(Approval_ID), Approval_id
FOR XML PATH('')
), 1, 1, '')