看样子你总是想面积和段吧?
SELECT c.new_name, d.new_SegmentName, ISNULL(COUNT(a.CustomerId),0) as jumlah
FROM filterednew_area c LEFT JOIN filteredaccount b ON b.new_AreaId = c.new_areaId
LEFT JOIN filterednew_partnersegment d ON b.new_PartnerSegmentId = d.new_partnersegmentId
LEFT JOIN filteredIncident a ON a.CustomerId = b.AccountId
WHERE MONTH(a.new_trxdate) = '10' AND YEAR(a.new_trxdate) = '2012'
AND c.new_areaid IN ('3C26906E-5C13-E211-8D39-005056850007','4E26906E-5C13-E211-8D39-005056850007')
GROUP BY c.new_name, d.new_SegmentName
如果你总是想要区域,你应该从它开始连接。
试试这个查询。
编辑:表的解决方案编辑后
select C.Area_Name, C.Segment_Name, ISNULL(count(I.incident_id), 0)
from customer C left outer join incident I
on C.Customer_name = I.Customer_Name
group by C.Area_Name, C.Segment_Name
编辑2:解决方案与笛卡尔积
要做到这一点,我想有一个表段有可能段(和我认为这种表出现在第一个查询中)
SELECT A.Area_Name, A.Segment_name, Count(Incident.Incident_Id) AS TOT
FROM
(
(SELECT Distinct Customer.Area_Name, Segment.Segment_name
FROM Segment, Customer
) AS A
LEFT OUTER JOIN Customer AS C
ON (C.Area_Name = A.Area_Name) AND (C.Segment_name = A.Segment_name)
)
LEFT OUTER JOIN Incident ON C.Customer_Name = Incident.Customer_name
GROUP BY A.Area_Name, A.Segment_name;
查询的结果是
Area_Name | Segment_name | TOT
JAKARTA | AIRPORT | 0
JAKARTA | PETROLEUM | 1
JAKARTA | TRADITIONAL | 1
MEDAN | AIRPORT | 1
MEDAN | PETROLEUM | 0
MEDAN | TRADITIONAL | 1
PLZ提供数据 –
@RahulVasantraoKamble表结构:表结构是如此简单。在事件表中,有customerid和incident_id。在客户表中,有customerid,new_areaid,new_partnersegment id。在Partnersegment表中,有new_partnersegmentid,new_name – user1875495
尽管您的数据很简单,但没有与石油组合的棉兰糖。你是否想要每个石油和传统每个区域计数?或者你是否暗示“机场”是指石油和意外的数据样本。 – DRapp