【发布时间】:2020-05-23 19:29:59
【问题描述】:
我查看了这个问题的其他答案,但没有找到解决方案。
我有两张带有跟踪号的表,一张有状态历史记录,每个跟踪都有几条记录,每种状态都有不同的日期时间。另一个表是成本表,每个跟踪都有一条记录,其日期时间与状态表的一般时间段相同,但从不准确。
由于前几个月的数据中的跟踪号重复,我不能只加入跟踪号本身。前任。跟踪号可能会出现在 2019 年 3 月和 2020 年 1 月,即使它们是非常不同的包裹。但是,如果您将跟踪与状态表上的 orderid 连接起来,您将获得一个唯一值。该 orderid 编号虽然不在成本表中,因此您也不能在该值上加入两个表。它必须是跟踪和某种日期范围。
因此,我希望使用跟踪号和从成本表上提供的日期和状态表上该跟踪号的最终日期起 +- 30 天的日期范围来连接这两个表。
因此,这样的事情显然没有“在 30 天的窗口内”部分。
SELECT C.cost
, S.trackingnumber
From UPSCost C
join UPSStatus S
ON C.trackingnumber = S.trackingnumber
WHERE MAX(S.date_time) is in a 30 day window of C.event_date_time
【问题讨论】:
-
请提供样本数据和预期结果。
-
请提供更多关于您所看到的和预期的细节。
标签: mysql date join range date-range