我都如下面提及的具有類似於列具有「order_history」和「current_order」表我得到新的訂單,我必須找到重疊的訂單,並從歷史表中刪除這些重複,然後追加current_table數據,但現在這是最糟糕的,因爲我的日期在當前表中發生變化,所以我必須考慮+/- 14天order_date的比較,然後從歷史表 刪除,請參閱樣本表數據
---目前訂單
order_name | CONSUMER_NAME | order_date的| ORDER_AMOUNT
羊毛| Jhon | 2017年6月15日| 500
羊毛| Jhon | 2017年7月14日| 1000
毛| Jhon | 2017年8月13日| 800
獲取匹配數據
---訂單歷史記錄
order_name | CONSUMER_NAME | order_date | ORDER_AMOUNT
羊毛| Jhon | 5/15/2017 | 1200
羊毛| Jhon | 6/10/2017 | 500
羊毛| Jhon | 7/8/2017 | 800
在上述情況下,我需要從歷史表中刪除六月和七月(6/10/2017和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
,但我得到重複的行
可以請你幫我這個查詢。一個解決方案可以是笛卡爾產品,其中每一行將與另一個表的所有行進行比較,但由於數據大小爲百萬行,此查詢將花費大量時間
您在查詢中有重複的條件,但這並不影響結果。看起來你有時在current_order中有多個記錄與order_history中的一條記錄匹配,所以當你加入它們時,你會在結果中獲得重複的歷史記錄。 –