我正在尝试创建一个 SOQL 查询,该查询返回具有 Influenced Opportunties的 Campaigns 列表,类似于具有相同名称的标准营销活动报告。以下似乎没有返回与报告相同的值:
SELECT Id,Name FROM Opportunity
where CampaignId in (SELECT CampaignId from CampaignMember where CampaignId = '??')
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
如果您追求简单的东西 - 这可能就足够了:
SELECT Campaign.Name, Id, Name, Amount
FROM Opportunity
WHERE CampaignId != null AND CloseDate = THIS_MONTH
Run Code Online (Sandbox Code Playgroud)
您可以轻松地将其转换为聚合查询,该查询也可以为您提供每个广告系列的总计:
SELECT Campaign.Name, Campaign.NumberOfOpportunities, SUM(Amount), COUNT(Id)
FROM Opportunity
WHERE CampaignId != null AND CloseDate = THIS_MONTH
GROUP BY Campaign.Name, Campaign.NumberOfOpportunities
Run Code Online (Sandbox Code Playgroud)
Campaign.NumberOfOpportunities(如果您发现Opps 和计数之间存在差异,没关系。这是因为第一个字段是“所有时间计数器”,而后一个字段受到 的影响WHERE CloseDate = THIS_MONTH)
如果您需要与报告返回的数据完全相同的整套数据(尤其是“已回复”),那么这将很棘手,因为这些对象的 ERD 图有点令人讨厌。
营销活动影响力使营销人员能够衡量和报告影响单个机会的多个营销活动。
因此,我们可以以某种方式从联系人开始,通过 OpportunityContactRole 转到机会。同时从“联系人”转到“CampaignMembers”再到“Campaign”。
SELECT Name, Email, Account.Name,
(SELECT HasResponded, Campaign.Name FROM CampaignMembers),
(SELECT Opportunity.Name, Opportunity.Amount FROM OpportunityContactRoles)
FROM Contact
LIMIT 10
Run Code Online (Sandbox Code Playgroud)
但是,您必须处理查询结果才能获取活动名称(例如,我认为不允许使用数据加载器导出子查询)。
最后但并非最不重要的一点 - 如果您只对一项活动或一项 Opp感兴趣,则可以对其进行简化(而且您已经非常接近了!)
SELECT Contact.Name, Opportunity.Account.Name, Opportunity.Name, Opportunity.Amount
FROM OpportunityContactRole
WHERE ContactId IN (SELECT ContactId FROM CampaignMember WHERE Campaign.Name = 'Sample Campaign')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3830 次 |
| 最近记录: |