2012-11-08 51 views
0

聯繫人和投訴之間存在N <> N關係。CRM報告:由相關實體分組

我的報告目前看起來是這樣的:

 Status 1 Status 2 Status 3 Status 4 
     3   4   32   34 

用下面的查詢:

SELECT 
    SUM(case WHEN status = 1 then 1 else 0 end) Status1, 
    SUM(case WHEN status = 2 then 1 else 0 end) Status2, 
    SUM(case WHEN status = 3 then 1 else 0 end) Status3, 
    SUM(case WHEN status = 4 then 1 else 0 end) Status4, 
    SUM(case WHEN status = 5 then 1 else 0 end) Status5 
FROM [DB].[dbo].[Contact] 

這在清單中的每個狀態的聯繫人數量。我現在正在嘗試在CRM中的一個相關實體的領域進行GROUP BY - 投訴。

          Status 1 Status 2 Status 3 Status 4 
Contact.Complaints.CreatedBy[1]    3   4   32   34 
Contact.Complaints.CreatedBy[2]    3   4   32   34 
Contact.Complaints.CreatedBy[3]    3   4   32   34 
Contact.Complaints.CreatedBy[4]    3   4   32   34 

我不知道在哪裏,我GROUP上手BY語句 - 任何指針將是真棒。我覺得我必須有另一個FROM語句指向NN關係,或者至少是投訴。

+0

如果你剛開始學習SQL,我想推薦的學習網站[www.sql-ex.ru](http://www.sql-ex.ru/learn_exercises.php )。是的,這是一個俄羅斯網站,但我還沒有找到更好的學習SQL網站。在某個時候,他們會進行分組和加入,這在這個問題上應該對您有所幫助。 –

+0

您應該使用過濾視圖,例如FilteredContact,然後是它仍然應用的CRM的安全模型。 –

回答

0

它應該和向投訴(通過N:N)表格添加JOIN一樣簡單。我完全同意James的觀點,只要確保以CRM用戶身份執行報告,否則Filtered視圖會返回0行。

SELECT 
MyComplaintType, 
...existing Sum(Case) stuff 

FROM 
FilteredContacts c 
JOIN 
Filterednew_Contacts_new_Complaint_new_complaints r1 (whatever your N:N is) 
    ON c.contactId = r1.contactId 
JOIN 
Filterednew_Complaint comp 
    ON r1.new_complaintId = comp.new_complaintId 
GROUP BY 
MyComplaintType