У меня есть набор таблиц, каждая из которых содержит связанные данные, и мне нужно выбрать самый последний набор записей для каждой строки в исходной таблице. Есть миллионы строк, и мне нужно сделать это эффективно, и пока я не могу вернуть только самую последнюю дату для данного числа.
Например, текущий результат для данного числа:
CampaignName MobileNumber Date
Campaign A 12345678910 12/02/2018 14:50:30
Campaign B 12345678910 05/02/2018 11:35:22
Должна быть возвращена только строка для Кампании А.
Я пытаюсь получить самое последнее сообщение для каждого номера мобильного телефона и данные кампании для этого сообщения (каждое сообщение является частью кампании.
SELECT CC.campaignname,
Co.mobilenumber,
Max(M.msgcreatetime)
FROM [Database].[dbo].[messages] M WITH(nolock)
INNER JOIN dbo.messagecontact MC WITH(nolock)
ON M.msgid = MC.messageid
INNER JOIN dbo.campaigncontact Co WITH(nolock)
ON Co.contactid = MC.contactid
INNER JOIN dbo.campaign CC WITH(nolock)
ON M.campaignid = CC.campaignid
GROUP BY CC.campaignname,
Co.mobilenumber