4

同じ名前の標準のキャンペーンレポートと同様に、影響を受ける機会のあるキャンペーンのリストを返すSOQLクエリを作成しようとしています。以下は、レポートと同じ値を返していないようです。

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

どんな助けでも大歓迎です。

4

1 に答える 1

5

単純なものを求めている場合は、これで十分かもしれません。

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')
于 2012-11-28T13:41:12.837 に答える