Сохранение заданного пользователем агрегированного порядка значений?

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

12
задан Magnus 26 September 2011 в 21:07
поделиться