同じ名前の標準のキャンペーンレポートと同様に、影響を受ける機会のあるキャンペーンのリストを返すSOQLクエリを作成しようとしています。以下は、レポートと同じ値を返していないようです。
SELECT Id,Name FROM Opportunity
where CampaignId in (SELECT CampaignId from CampaignMember where CampaignId = '??')
どんな助けでも大歓迎です。
同じ名前の標準のキャンペーンレポートと同様に、影響を受ける機会のあるキャンペーンのリストを返すSOQLクエリを作成しようとしています。以下は、レポートと同じ値を返していないようです。
SELECT Id,Name FROM Opportunity
where CampaignId in (SELECT CampaignId from CampaignMember where CampaignId = '??')
どんな助けでも大歓迎です。
単純なものを求めている場合は、これで十分かもしれません。
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とOppsの数の間に不一致が生じた場合は、問題ありません。これは、最初のフィールドが「全時間カウンター」であり、後のフィールドが影響を受けるためですWHERE CloseDate = THIS_MONTH
)
レポートによって返されるデータセット全体(特に「応答済み」)が必要な場合、これらのオブジェクトのERDダイアグラムは少し厄介なので、注意が必要です。
キャンペーンの影響力により、マーケターは単一の機会に影響を与えた複数のキャンペーンを測定してレポートすることができます。
したがって、どういうわけかContactから開始し、OpportunityContactRoleを介してOpportunitiesに移動することができます。同時に、連絡先からCampaignMembersに移動してキャンペーンに移動します。
SELECT Name, Email, Account.Name,
(SELECT HasResponded, Campaign.Name FROM CampaignMembers),
(SELECT Opportunity.Name, Opportunity.Amount FROM OpportunityContactRoles)
FROM Contact
LIMIT 10
ただし、キャンペーン名を取得するには、クエリの結果を処理する必要があります(たとえば、サブクエリをデータローダーでエクスポートすることは許可されていないと思います)。
最後になりましたが、1つのキャンペーンまたは1つの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')