Tsql CRM报告:按相关实体分组

Tsql CRM报告:按相关实体分组,tsql,dynamics-crm,dynamics-crm-2011,crm,dynamics-crm-4,Tsql,Dynamics Crm,Dynamics Crm 2011,Crm,Dynamics Crm 4,联系人和投诉之间存在着NN关系 Status 1 Status 2 Status 3 Status 4 Contact.Complaints.CreatedBy[1] 3 4 32 34 Contact.Complaints.CreatedBy[2] 3 4

联系人和投诉之间存在着NN关系

                                         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
我的报告目前如下所示:

      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中相关实体的字段进行分组-投诉

                                         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

我不知道从哪里开始在我的小组中发言-任何指针将是可怕的。我觉得我必须有另一份声明,指向NN的关系,或者至少是抱怨

这应该像添加一个连接到投诉(通过N:N)表一样简单。我完全同意James的观点,只要确保您以CRM用户的身份执行报告,否则过滤视图将返回0行

                                         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
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

如果您刚刚开始学习SQL,我想推荐学习网站。是的,这是一个俄语网站,但我还没有找到更好的学习SQL的网站。在某个时候,他们会进行分组和联接,这在这个问题上应该对您有所帮助。您应该使用过滤视图,例如FilteredContact,然后CRM的安全模型仍然适用。