1

私がデータを取得しようとしている質問は-

「マーケティング キャンペーンの影響を受けたオポチュニティがいつアカウントに関連付けられるかを知りたいです。アカウントには複数の連絡先が存在する可能性があるため、いずれかの連絡
先がキャンペーン (キャンペーンのメンバー) に関連付けられている場合、連絡先が接続されているアカウントを教えてください。アカウントに関連付けられたオポチュニティがある場合、そのオポチュニティは、連絡先がキャンペーンに関連付けられた後に作成されたものです。」</p>

論理が解りません。私はSQLが初めてです。どんな助けでも大歓迎です。

SQL Server 2012 を使用しています

SalesForce データベースから 5 つの関連テーブルがあります –</p>

アカウント テーブル (PK ID、OpportunityID)、商談テーブル (PK ID、AccountID )、連絡先テーブル (PK ID、AccountID)、キャンペーン テーブル (PK ID、ContactID、ParentID)、CampaignMember テーブル (PK ID、ContactID、CampaignID)

このリンクは、SalesForce データ モデル http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_erd_majors.htmを提供します。

これは私が思いついたものですが、行は返されません。

SELECT O.CreatedDate OppCreatedDate
,o.Name as OpportunityName
,a.Name AccountName
,c.Name as ContactName
,ca.Name as CampaignName
,o.Amount_Software
,o.CreatedDate
FROM Opportunity o
INNER JOIN Account a on a.Id = o.AccountID 
LEFT JOIN  Contact c ON c.AccountId = a.Id
INNER JOIN CampaignMember cm ON cm.CampaignID  = c.ID
INNER JOIN Campaign ca ON ca.ID = cm.CampaignID
LEFT JOIN Campaign ca2 ON ca2.ID = ca.ParentID
WHERE o.CreatedDate > cm.CreatedDate
ORDER BY AccountName DESC;

ありがとうございました。

4

1 に答える 1

1

あいまいなLEFTJOINでINNERJOINを実行しています。

商談<->アカウント
アカウント->
キャンペーンメンバーに連絡する<->連絡先(上記の行があるため、これは左参加である必要があります)
キャンペーンメンバー<->キャンペーン(行があるため、これは左参加である必要があります)上記の2つ)
キャンペーン->キャンペーン

このためのビジュアルはここにあります(新しいテーブルを左に結合されたテーブルに内部結合することはできません):

良い例:
内部結合<->内部結合->左結合->左結合

悪い例:
内部結合<->内部結合->左結合->内部結合

于 2013-02-19T22:03:31.593 に答える