Я пишу запрос, который должен показывать для группы пользователей, какие письма он / она получил, и было ли письмо открытым или нет.
Это результат запроса:
Product | Year | Month | SendTime | UserId | EmailTitle | Open
That one | 2018 | 11 | 2018-11-23 | 1000756 | JoinUs | 1
That one | 2018 | 11 | 2018-11-25 | 1000756 | JoinUs | 0
That one | 2019 | 1 | 2019-01-04 | 1000756 | Need Help? | 0
That one | 2019 | 4 | 2019-04-07 | 1000756 | Win Back | 0
That one | 2019 | 4 | 2019-04-10 | 1000756 | A gift to you | 0
У меня проблема в том, что пользователь может получать одно и то же письмо чаще, чем раз в месяц, и открывать только один из них.Одним из примеров является EmailTitle JoinUs, который был получен в 23 и 25 дни, но было открыто только письмо 23и мне нужно показать только тот, который был открыт, желательно.
SELECT S.Product,
YEAR(S.SendTime) [Year],
MONTH(S.SendTime) [Month],
S.SendTime SendTime,
S.UserId,
M.EmailName,
CASE WHEN Mo.ContactID IS NOT NULL THEN 1 ELSE 0 END [Open]
FROM MailSend S
JOIN CommMapping2 M on M.EmailName = S.EmailName
LEFT JOIN MailOpen Mo ON Mo.JobId = S.JobId AND Mo.BatchID = S.BatchID AND Mo.ContactID = S.ContactID
WHERE S.UserId IS NOT NULL AND S.UserId = '1000756'