私は両方の下記に言及されるような同様の列を有する「current_order」テーブル「order_history」とを有しています私は、新しい注文を取得し、私は、重複注文を見つけると、それらを削除する必要が履歴テーブルから重複してからcurrent_tableデータを追加しますが、私の日付は現在のテーブルに変更なっているので、今、これは最悪となっているので、私は一方で+/- 14日考慮する必要がありますサンプルテーブルデータ
---現在の注文
を参照してくださいORDER_DATEを比較して、履歴テーブル から削除order_name | Consumer_name | order_date | order_amount
ウール| Jhon | 6/15/2017 | 500
ウール| Jhon | | 7/14/2017 | 1000
ウール| Jhon | | 8/13/2017 | 800
取得一致するデータが
---注文履歴
order_name | Consumer_name | order_date | order_amount
ウール| Jhon | 5/15/2017 | 1200
ウール| Jhon | 6/10/2017 | 500
ウール| Jhon | | 7/8/2017 | 800
上記のシナリオでは、juneとjuly(6/10/2017と2011/7/8/2017)の月の注文行を履歴表から削除し、現在の注文表項目を履歴表に追加する必要があります。
私は、クエリ
select a.order_name, a.consumer_name, a.order_date , a.order_amount
from order_history a inner join current_order b
on (upper(a.order_name) = upper(b.order_name) and
upper(a.consumer_name) = upper(b.consumer_name))
where
upper(a.order_name) = upper(b.order_name) and
upper(a.consumer_name) = upper(b.consumer_name)
and a.order_date -b.order_date <= 14 and a.order_date -b.order_date >= -14
の下に使用していますが、私はこのクエリで私を助けてくださいすることができます重複行
を取得しています。 1つのソリューションは、各行が別のテーブルのすべての行と比較されるデカルト積であってもよいが、データサイズが百万行のためにこのクエリは膨大な時間を要する。
クエリに重複した条件がありますが、その結果には影響ありません。 current_orderには、order_historyの1つのレコードと一致する複数のレコードが存在することがあるので、結果に重複した履歴レコードが表示されることがあります。 –