Я ищу помощь, запрашивающую вывод сообщений моего приложения. У меня есть запрос, который берет строки каждого сообщения и объединяет их вместе для формирования предложения. Однако некоторые из моих сообщений имеют два или более сообщения, в этом случае я хочу только сообщение с самой новой датой. Мой текущий код выводит все сообщения в предложение, объединяя номера строк вместе для каждого номера сообщения и вызывая их по порядку по MSG_NUM. Я добавил упорядочение по MSG_START_DATE, но, как и ожидалось, все равно дает мне обоим. Как я могу сделать max для каждой линии конкатенированных сообщений?Строки SQL concat с одинаковым идентификатором и самой новой датой
Вот поля, я работаю с:
MSG_NUM | MSG_START_DATE | MSG_LINE_NUM | MSG_TEXT
1 | 2010-01-15 | 1 | Invalid operation
1 | 2010-01-15 | 2 | try again
1 | 2014-02-21 | 1 | Invalid input
1 | 2014-02-21 | 2 | try again
Вот мой текущий код:
Select distinct ST2.[MSG_NUM],
substring(
(
(Select ' '+LTRIM(RTRIM(ST1.[MSG_TEXT])) AS [text()]
From database..messages ST1
Where ST1.[MSG_NUM] = ST2.[MSG_NUM]
ORDER BY ST1.[MSG_START_DATE], ST1.[MSG_LINE_NUM]
For XML PATH (''),root('xmlchar'), type).value('/xmlchar[1]','varchar(max)')
), 2, 2000) [Message]
From database..messages ST2 order by ST2.[MSG_NUM]
А вот выход я получаю:
1 Invalid повторите попытку Неправильный вход повторите попытку
Я хочу только вывод:
1 Invalid вход попробуйте еще раз
Любые идеи о том, как я могу это сделать?
Всегда старайтесь включать РСУБД тег для SQL вопросы 'SqlServer',' MySql' ?. Некоторые функции доступны для всех баз данных. –
Добавлено! (SQL Server 2012) – Ryan