具有影响机会的salesforce soql广告系列

时间:2012-11-28 12:52:27

标签: salesforce soql

我正在尝试创建一个SOQL查询,该查询返回带有影响力的广告系列的列表,类似于具有相同名称的标准广告系列报告。以下似乎没有返回与报告相同的值:

SELECT Id,Name FROM Opportunity
where CampaignId in (SELECT CampaignId from CampaignMember where CampaignId = '??')

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

如果你追求简单的事情 - 这可能就足够了:

SELECT Campaign.Name, Id, Name, Amount
FROM Opportunity
WHERE CampaignId != null AND CloseDate = THIS_MONTH

您可以轻松地将其转换为聚合查询,该查询也为每个广告系列提供总计:

SELECT Campaign.Name, Campaign.NumberOfOpportunities, SUM(Amount), COUNT(Id)
FROM Opportunity
WHERE CampaignId != null AND CloseDate = THIS_MONTH
GROUP BY Campaign.Name, Campaign.NumberOfOpportunities

(如果你在Campaign.NumberOfOpportunities和Opps计数之间出现差异就可以了。这是因为第一个字段是“所有时间计数器”而后一个字段受WHERE CloseDate = THIS_MONTH的影响


如果您需要完全按照报告返回的整套数据(特别是“已回复”),那将会很棘手,因为ERD diagram for these objects有点讨厌。

  

广告系列影响力允许营销人员衡量和报告多个广告系列   影响单一机会的广告系列。

所以我们可以从Contact开始,通过OpportunityContactRole转到Opportunities。同时从联系人转到CampaignMembers到Campaign。

SELECT Name, Email, Account.Name, 
    (SELECT HasResponded, Campaign.Name FROM CampaignMembers),
    (SELECT Opportunity.Name, Opportunity.Amount FROM OpportunityContactRoles)
FROM Contact 
LIMIT 10

但是,您必须处理查询结果才能获取广告系列名称(我不认为允许使用数据加载器导出子查询)。


最后但并非最不重要 - 如果您对只有一个广告系列或只有一个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')