我們有一個每天從客戶端導入數據文件的SQL Server。這些數據是相互關聯的,我們一直在對它進行清理,並且在這些文件之間尋找可疑的重複記錄。在SQL Server中,將記錄與其他記錄進行比較以找出給定值範圍內的重複項的最有效方法是什麼?
查找和標記可疑記錄可能會非常複雜。我們使用需要某些字段值相同的邏輯,允許一些字段值不同,並且允許指定一個範圍來指定某些字段值可能有多不同。我們發現這樣做的唯一方法是使用基於光標的進程,這給數據庫帶來了沉重的負擔。
所以我想問問是否有更有效的方法來做到這一點。我聽說它說幾乎總是有一種更高效的方法來用聰明的JOINS替換遊標。但我不得不承認,我在這方面遇到了很多麻煩。
對於一個具體的例子,假設我們有1個表格,一個「訂單」表格,下面6個字段。
(order_id, customer_id, product_id, quantity, sale_date, price)
我們希望查看記錄以查找以下示例條件中的可疑重複項。這些越來越難。具有相同的product_id,SALE_DATE和數量,但不同的customer_id的
- 記錄應標記爲審查犯罪嫌疑人重複
- 記錄具有相同CUSTOMER_ID,PRODUCT_ID,數量和具有在彼此五天sale_dates應被標記爲可疑複製品以供審覈
- 具有相同customer_id,product_id但在20個 單位內的不同數量以及彼此之間的五天內的銷售日期的記錄應被視爲可疑。
是否有可能通過使用JOINS的單個SQL查詢來滿足這些條件中的每一個?這是做這件事最有效的方法嗎?
我們正在尋找可以在服務器上運行的單個SQL語句,只要所有數據都在表中(臨時或其他)存在。 – Glenn 2010-03-25 20:23:18