0

联系人和投诉之间存在 N<>N 关系。

我的报告目前如下所示:

      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 语句中从哪里开始 - 任何指针都会很棒。我觉得我必须有另一个指向 NN 关系的 FROM 声明,或者至少是投诉。

4

1 回答 1

0

它应该像向 Complaints(通过 N:N)表添加 JOIN 一样简单。我完全同意 James 的观点,只要确保您以 CRM 用户身份执行报告,否则过滤视图返回 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
于 2012-11-09T11:16:15.387 回答