我有以下表格:机会,帐户,联系人,CampaignMember和Campaign。
对于每一个机会,我想用SQL找出组装表:?什么是所带来的机遇前的最后活动响应:我们称之为“最后触摸”广告系列< / p>
要做到这一点,我们必须从商机开始,查看相关帐户,查看与此帐户相关的所有联系人,并使用最新 ResponseDate返回此帐户的CampaignMember这是之前的Opportunity.CreatedDate。
输出应包含3列:机会ID,最后触摸广告系列ID和最后触摸广告系列类型。
对于商机号1,CampaignMember ID 3的最新响应日期之前商机CreatedDate。
对于Opportunity ID 2,CampaignMember ID 4具有机会创建日期之前的最新响应日期。我们必须忽略在创建商机后发生的广告系列成员回复。
在我们的示例中,恰好相同的广告系列是在创建商机之前的“最后触摸”。
答案 0 :(得分:0)
有点难看,但似乎工作(在数据库小提琴上测试 - 更改名称,请更正你的基础)。
select dt.id, campaign.id as LastTouchId, campaign.type as LastTouchType from (
select opportunity.id, max(ct.responsedate) as responsedate from opportunity
left join account on account.id = opportunity.account_id
left join (select contact.account_id, campaignmember.responsedate from
contact inner join campaignmember on campaignmember.id = contact.campaignmember_id)
as ct on ct.account_id = account.id and ct.responsedate < opportunity.createddate
group by opportunity.id) as dt
inner join account on account.id = dt.id
inner join contact on contact.account_id = account.id
inner join campaignmember on campaignmember.id = contact.campaignmember_id and
campaignmember.responsedate = dt.responsedate
inner join campaign on campaign.id = campaignmember.campaign_id