Я использую код из этой страницы MSDN для создания определяемого пользователем агрегата для объединения строк с группой с помощью
] в 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
?