У меня довольно сложный запрос, который я пытаюсь составить. У меня есть 2 таблицы, tblSMS и tblSMSSent, которые содержат данные для SMS-сообщений, отправленных и полученных через API. Мне нужно написать запрос, который дает мне каждое отправленное сообщение в сочетании с каждым ответом на это сообщение. Я пробовал сделать это с помощью LiNQ, но мой второй запрос на получение сообщений для каждого отправленного сообщения ничего не возвращает.
Вот мой первоначальный запрос на получение каждого отправленного сообщения:
var query = "Select top({0}) * from (" +
" SELECT DISTINCT ROW_NUMBER() OVER(ORDER BY[date] desc) " +
" AS RowNum, RTRIM(phone) as phone, [date], " +
" RTRIM(LEFT(result,50)) as result, RTRIM(debtor) as debtor, " +
" RTRIM(sms) as OrigBody, RTRIM([user]) as [user], " +
" RTRIM(MessageId) as MessageId FROM tblSMSSent " +
" where RTRIM([user]) = '{2}' " +
") AS tbl WHERE tbl.RowNum > {1} "
Этот запрос возвращает данные правильно. Когда я запускаю запрос с соединением, например
Select top{0} * from (
SELECT DISTINCT ROW_NUMBER() OVER(ORDER BY[date] desc)
AS RowNum, RTRIM(phone) as phone, [date],
RTRIM(LEFT(result,50)) as result, RTRIM(debtor) as debtor,
RTRIM(sms) as OrigBody, MessageBody, RTRIM([user]) as [user],
RTRIM(MessageId) as MessageId FROM tblSMSSent
right join tblSMS on messageId=outgoingmessageId
where RTRIM([user]) = '{2}'
) AS tbl WHERE tbl.RowNum > {1}
, он возвращает несколько строк для каждого MessageBody, соответствующего этому MessageId. Мне нужно, чтобы MessageBody содержал каждое сообщение от tblSMS в одной строке с определенными разделителями.
Это некоторые образцы данных, которые я получаю:
Это данные, которые мне нужны:
Я попытался (безуспешно) выполнить sh это с помощью LiNQ, как я сказал выше, но это не тот путь, по которому я хочу идти, и по возможности предпочитаю сохранить его в виде одного запроса. Поскольку я использую более старую версию SQL серверных команд, таких как For XML, недоступны для помощи в манипулировании данными.
Поскольку я хочу завершить это, я отправляю эти данные ответа обратно клиенту для отображения в HTML. Как сделать разрыв строки между объединенными результатами?
Какие у меня есть варианты?
Спасибо.