我是一个完整的新手,因此无法通过查看过去的帖子找到解决方案。我有一个地理数据库(ESRI ArcMAP,大约70k记录),其中包含从两个数据库合并的道路终止数据。
实施例。
Date_, Route, MilePost, Database
10/1/2012, ML34, 113, Animal_Vehicle
10/2/2012, ML34, 113.4, Carcasses
10/2/2012, ML16, 86, Carcasses
我正在尝试整理两个数据库之间的重复记录。已删除具有相同MilePost
,Route
和Date_
的记录。问题是:Animal_Vehicle
可以在一周中的任何时间或某天记录冲突,而Carcasses
数据库中的记录仅在正常工作时间记录。因此,重复是由前一天或周末的Animal_Vehicle
小时后记录的尸体引起的。然后在第二天早晨或周一(或假日周末的周二)由Carcasse
复制记录。另一个问题是Animal_Vehicle MilePosts
往往四舍五入到最近的半英里,而Carcasses MilePosts
更精确。
目标是构建一个返回在两个Database
值之间配对的记录的查询或算法,以便在Database=Carcasses
时,查询返回Database=Animal_Vehicle
的记录,其中MilePost
1}}是Carcasses
记录的+/- 0.4,Date_
在Carcasses
记录的最后四天内。它将返回示例数据的前两行。
非常感谢任何回复!谢谢!
答案 0 :(得分:1)
这只是一个奇特的加入:
select *
from Carcasses c full outer join
Animal_Vehicle av
on c.date between av.date and av.date+3 and
abs(c.Milepost - av.Milepost) < 0.5 and
c.route = av.route
on
子句具有基于您的描述的条件。这可能不是一个非常快速的查询。并且,我假设您正在使用一个数据库,您可以使用“+3”将日期添加到日期 - 这取决于数据库。