我一直在用一个查询,正在驱使我坚果的圈子中运行。左连接多列不需要重复
背景:
我有两个表,不幸的是,两个表都有重复的记录。 (处理活动日志,如果这样做的话)。每个表都来自不同的系统,我试图将数据连接在一起以获得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)