我是新來的SQL ...SQL Server;試圖加入三個表,彙總和分組結果
我有以下三個表工作:
表:廣告系列
Campaign SourcePhone StartDate EndDate
A 1112223333 20140303 20140309
B 2223334444 20140303 20140309
C 1112223333 20140310 20140316
D 3334445555 20140217 20150217
表:PhoneMapping(將來自Campaigns的SourcePhone映射到訂單表)
SourcePhone TransferToPhone
1112223333 9998887777
1112223333 8887776666
2223334444 7776665555
3334445555 6665554444
3334445555 5554443333
表:訂單
Date TransferToPhone Orders
20140304 9998887777 3
20140304 8887776666 4
20140304 6665554444 34
20140305 7776665555 7
20140305 9998887777 5
20140306 9998887777 10
20140306 8887776666 13
20140307 8887776666 7
20140309 7776665555 1
20140311 9998887777 35
20140313 8887776666 8
20140315 9998887777 22
20140305 6665554444 11
我一直在試圖想出一個查詢,將加入這三個表,並提供以下結果。基本上,我需要爲每個廣告系列,SourcePhone#,轉移到電話號碼和日期範圍(每個廣告系列的StartDate和EndDate之間)提供TotalOrders的總和。以下是我期待查詢提供的結果(我認爲我的數學是正確的)。任何幫助是極大的讚賞!
預期結果:
Campaign SourcePhone TransferToPhone StartDate EndDate TotalOrders
A 1112223333 9998887777 20140303 20140309 18
A 1112223333 8887776666 20140303 20140309 24
B 2223334444 7776665555 20140303 20140309 8
C 1112223333 9998887777 20140310 20140316 57
C 1112223333 8887776666 20140310 20140316 8
D 3334445555 6665554444 20140217 20150217 45
這裏是我試過了,但它並不羣基礎上的日期範圍內的數據:
SELECT C.Campaign, C.SourcePhone, PM.TransferToPhone, C.StartDate , C.EndDate, O.TotalOrders
FROM Campaigns AS C
INNER JOIN
(SELECT SourcePhone, TransferToPhone
FROM PhoneMapping
WHERE (TransferToPhone IS NOT NULL)) AS PM ON C.SourcePhone = PM.SourcePhone
INNER JOIN
(SELECT TransferToPhone, SUM(Orders) AS TotalOrders
FROM Orders
WHERE (Orders IS NOT NULL)
Group by TransferToPhone) AS O ON PM.TransferToPhone = O.TransferToPhone
GROUP BY C.Campaign, C.SourcePhone, PM.TransferToPhone, C.StartDate , C.EndDate
MySQL還是Microsoft?請修復您的標籤。另請查閱JOIN標籤。 –
哪個RDBMS,並且提供適當的DDL(和/或sqlfiddle)與期望的結果集合在一起。另外,告訴我們你已經嘗試了一些東西。 – Strawberry
感謝您的意見。這些標籤已經更新,並且我嘗試使用的查詢已發佈。 – user3469435