我一直在用一個查詢,正在驅使我堅果的圈子中運行。左連接多列不需要重複
背景:
我有兩個表,不幸的是,兩個表都有重複的記錄。 (處理活動日誌,如果這樣做的話)。每個表都來自不同的系統,我試圖將數據連接在一起以獲得sudo完整圖片(我意識到我不會獲得完美的視圖,因爲兩個系統之間沒有「事件密鑰」共享;我嘗試匹配元數據的組合)。
以下是我與合作:
Table1
------------
JobID CustID Name ActionDate IsDuplicate
12345 11111 Ryan 1/1/2015 01:20:20 False
12345 11112 Bob 1/1/2015 02:10:20 False
12345 11111 Ryan 1/1/2015 04:15:35 True
12346 11113 Jim 1/1/2015 05:10:40 False
12346 11114 Jeb 1/1/2015 06:10:40 False
12346 11111 Ryan 1/1/2015 07:10:30 False
Table2
------------
ResponseID CustID ActionDate Browser
11123 10110 12/1/2014 23:32:15 IE
12345 11111 1/1/2015 03:20:20 IE
12345 11112 1/1/2015 05:10:20 Firefox
12345 11111 1/1/2015 06:15:35 Firefox
12346 11113 1/1/2015 07:10:40 Chrome
12346 11114 1/1/2015 08:10:40 Chrome
12346 11111 1/1/2015 10:10:30 Safari
12213 11123 2/1/2015 01:10:30 Chrome
請注意以下幾點:
- 作業ID和ResponseID是一回事
- 作業ID和ResponseID是在網站上的活動指標(人們對事件做出響應)
- 操作日期不匹配(系統2的延遲時間不一致,但延遲時間不會超過3小時)
- 注意表2沒有重複標記
- 表1(〜2,000條記錄)明顯小於表2(約16,000條記錄)
- 註釋Cust 11111在瀏覽器上不斷跳動,在作業12345的不同時間執行兩次相同的操作,並且只在作業中採取一次操作12346
我在尋找:
Result (ideal)
------------
t1.JobID t1.CustID t1.Name t1.ActionDate t2.Browser
12345 11111 Ryan 1/1/2015 01:20:20 IE
12345 11112 Bob 1/1/2015 02:10:20 Firefox
12345 11111 Ryan 1/1/2015 04:15:35 Firefox
12346 11113 Jim 1/1/2015 05:10:40 Chrome
12346 11114 Jeb 1/1/2015 06:10:40 Chrome
12346 11111 Ryan 1/1/2015 07:10:30 Safari
請注意,我只是想在表1的記錄相符。由於加入,我得到了大量的重複...這是令人沮喪的。
這裏是我到目前爲止(我可以謙卑可以說,是不是真的關閉):
SELECT
t1.JobID,
t1.CustID,
t1.Name,
t1.ActionDate,
t2.Browser
FROM
Table1 t1
LEFT OUTER JOIN
Table2 t2
ON
t1.JobID=t2.ResponseID AND
t1.CustID=t2.CustID AND
DATEPART(dd,t1.ActionDate)=DATEPART(dd,t2.ActionDate)