1

私はいくつかのテーブルを持っています

テーブルインシデント

 incident_id | Customer_name
 01          | AAA
 02          | BBB
 03          | CCC
 04          | DDD

テーブル カスタマー

 Customer_name | Area_Name | Segment_Name 
 AAA           | JAKARTA   | PETROLEUM
 BBB           | MEDAN     | TRADITIONAL
 CCC           | JAKARTA   | TRADITIONAL
 DDD           | MEDAN     | AIRPORT

テーブルエリア

 Area_Name | Phone
 JAKARTA   | 021
 MEDAN     | 022

期待される結果:

 Area    | Segment     | Number (count from Incident tabel)
 JAKARTA | PETROLEUM   | 1
 MEDAN   | TRADITIONAL | 1
 JAKARTA | TRADITIONAL | 1
 MEDAN   | PETROLEUM   | 0

どんな助けでも役に立ちます

4

1 に答える 1

0

常にエリアとセグメントが必要なようですね。

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

EDIT 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 
于 2012-12-04T11:36:34.670 に答える