0

私は完全な初心者であるため、過去の投稿を見て解決策を見つけることができませんでした。2 つのデータベースからマージされた交通事故データを含むジオデータベース (ESRI ArcMAP、約 70,000 レコード) があります。

元。

Date_, Route, MilePost, Database

10/1/2012, ML34, 113, Animal_Vehicle

10/2/2012, ML34, 113.4, Carcasses

10/2/2012, ML16, 86, Carcasses

2 つのデータベース間で重複するレコードを整理しようとしています。MilePost同じ、Route、 を持つレコードDate_は既に削除されています。問題はこれです:データベースからのレコードは通常の営業時間中にのみ記録さAnimal_Vehicleれるのに対し、いつでも、または曜日に衝突を記録できます。したがって、前日の営業時間外または週末にCarcasses記録された枝肉から重複が生じます。Animal_Vehicleレコードは、Carcasse翌朝、または月曜日 (休日の週末の場合は火曜日) に s によって複製されます。別の問題はAnimal_Vehicle MilePosts、最も近い半マイルに丸められる傾向があるのに対しCarcasses MilePosts、より正確であるということです.

Database目標は、2 つの値の間でペアになったレコードを返すクエリまたはアルゴリズムを構築することです。これにより、クエリはDatabase=Carcassesのレコードを返しますDatabase=Animal_Vehicle。. サンプル データの最初の 2 行が返されます。MilePostCarcassesDate_Carcasses

どんな反応でも大歓迎です!ありがとう!

4

1 に答える 1

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」を使用して日付に日数を追加できるデータベースを使用していると仮定していますが、これはデータベースによって異なります。

于 2012-12-31T00:17:09.877 に答える