Im, используя код этой страницы MSDN, чтобы создать агрегат, определенный пользователем, для объединения строк с group by's
в SQL-сервере. Одним из моих требований является то, что порядок конкатенированных значений такой же, как в запросе. Например:
Value Group
1 1
2 1
3 2
4 2
Использование запроса
SELECT
dbo.Concat(tbl.Value) As Concat,
tbl.Group
FROM
(SELECT TOP 1000
tblTest.*
FROM
tblTest
ORDER BY
tblTest.Value) As tbl
GROUP BY
tbl.Group
Результат:
Concat Group
"1,2" 1
"3,4" 2
Результат кажется всегда правильным и ожидаемым, но чем я натолкнулся на эту страницу, в котором говорится, что заказ не гарантирован и что атрибут SqlUserDefinedAggregateAttribute.IsInvariantToOrder
зарезервирован только для использования в будущем.
Итак, мой вопрос: правильно ли предположить, что конкатенированные значения в строке могут закончиться в любом порядке? Если это так, то почему код примера на странице MSDN использует атрибут IsInvariantToOrder
?