У меня есть следующая таблица
Created Comment
2010/10/10 Text1
2010/11/11 Text2
2010/12/12 Text3
Мне нужно собрать все комментарии в одну строку
SELECT @Comment = COALESCE(@Comment, '')
+ CHAR(13) + CHAR(10) + CONVERT(NVARCHAR(30), [dbo].[Comment].[Created], 101) + ': ' + ISNULL([Comment].[Text], '')
FROM Comment
Без заказа все работает как положено и в конце верните все комментарии.
Но после запуска следующего кода, где добавлено предложение ORDER BY :
SELECT @Comment = COALESCE(@Comment, '')
+ CHAR(13) + CHAR(10) + CONVERT(NVARCHAR(30), [Created], 101) + ': ' + ISNULL([Text], '')
FROM Comment
ORDER BY Created
Возврат только последнего комментария.
Кто-нибудь знает, почему ORDER BY приводит к странному результату в конкатенации?
PS: Это нормально работает, если вместо конкатенации используется предложение FOR XML Есть ли способ создать функцию SQL Server для «объединения» нескольких строк из подзапроса в одно поле с разделителями? .