2017-07-12 4 views
0

私は両方の下記に言及されるような同様の列を有する「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つのソリューションは、各行が別のテーブルのすべての行と比較されるデカルト積であってもよいが、データサイズが百万行のためにこのクエリは膨大な時間を要する。

+0

クエリに重複した条件がありますが、その結果には影響ありません。 current_orderには、order_historyの1つのレコードと一致する複数のレコードが存在することがあるので、結果に重複した履歴レコードが表示されることがあります。 –

答えて

0

ABSを使用して、正数。単に履歴テーブルから削除する場合は、EXISTSを使用して現在の受注テーブルを参照してください。

関連する問題