Я использую код из этой страницы 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
?