3

名と姓だけが異なるメンバーの重複が多数あるという名前のメンバー (一意の ID は MemberID) のテーブルがありますが、会社名、住所、都市、州、および郵便番号はすべて同じです。レコードが重複してインポートされました。

BusinessName、Addr1、City、State、および ZIP がすべて同じ重複メンバーを見つけるスクリプトを実行するにはどうすればよいですか。

それらをすべてページにリストしたいので、どれを削除するかを選択できます。

このためのスクリプトを作成する方法はありますか?

よろしくお願いします。

ポール

4

2 に答える 2

1

これには分析関数を使用します。

select m.*
from (select m.*,
             count(*) over (partition by BusinessName, Address, City, State, ZipCode) as NumDups 
      from members m
     ) m
where NumDups > 1

NumDupsは、重複がいくつあるかを示します。

于 2012-06-04T17:28:38.083 に答える
1
select * from Member as m
where exists(select MemberID 
      from Member as m2 
      where 
           (m.BusinessName = m2.BusinessName or (m.BusinessName is null and m2.BusinessName is null)) and 
           (m.Addr1 = m2.Addr1 or (m.Addr1 is null and m2.Addr1 is null)) and 
           (m.City = m2.City or (m.City is null and m2.City is null)) and 
           (m.State = m2.State or (m.State  is null and m2.State is null)) and 
           (m.ZIP = m2.ZIP or (m.ZIP  is null and m2.ZIP is null)) and 
           m.memberID <> m2.MemberID)

上記のクエリで、whereは重複エントリが存在するかどうかを確認しています。サブクエリは、が一致MemberIDしないコピーがある場合にのみ結果を返します。つまり、一意の行がある場合は結果がありませんが、1つ以上のコピーがある行がある場合は返されます。

于 2012-06-04T17:30:01.007 に答える