2016-11-02 7 views
0

Ich habe eine Datenbank, in der die Zeilen logisch durch zwei Bits von Informationen identifiziert werden:
NAME ist ein Firmenname. denke zum Beispiel IBM Corporation LOC ist eine Baustelle. Denken Sie an London Development Center. Also würde der Gesamtname zwei Felder verkettet sein: IBM London Development Center (dies ist nicht der Tabellenschlüssel, es gibt eine Ersatzkennung, aber logisch bilden diese beiden Spalten eine eindeutige Zeile. In diesem Fall kann IBM auf erscheinen Hunderte von Datensätzen, aber dort sollte nur ein IBM London Development Center Datensatz sein (mit NAME und LOC concantenated)Ich muss fast Duplikate mit SQL in MS Access finden

Aber es gibt NEAR Duplikate Benutzer haben eine Zeichenfolge an das Ende von LOC angehängt, um eine andere Verwendung von was zu bezeichnen sein, einen einzigen Namen-Location und erstellt doppelte Zeilen wie diese:.

PAIR ONE

Name: IBM
LOC: London Development Center

Name: IBM
LOC: London Development Center ALT

oder PAIR ZWEI

Name: IBM
LOC: New York Daten Zentrum

Name: IBM
LOC: New York Daten Center XYZ

Ich brauche nicht alle Datensätze mit IBM als den Namen (Firmenname) zu identifizieren, gibt es Hunderte. Ich muss nur diese fast doppelten Paare finden, wo jemand den LOC-Namen dupliziert hat und am Ende etwas hinzugefügt hat. Ich muss sowohl den ursprünglichen Datensatz UND den mit der hinzugefügten Zeichenfolge finden. Als Paar kann ich jemanden arbeiten lassen, der diese Duplikate auflöst.

Es ist in einer Anwendung, aber ich habe es in Access für dieses Profiling ausgesaugt. Es gibt ungefähr 40.000 Reihen in der Tabelle, und nur 1000 oder so sind diese fast Duplikate.

Steve

+0

Schritt 1 - Fixieren Sie die Anwendung, um ein erneutes Auftreten zu verhindern. Schritt 2 - Sie müssen wahrscheinlich die verdächtigen Aufzeichnungen zu sehen, um festzustellen, ob sie Betrogene sind oder nicht. Tun Sie etwas gegen diejenigen, die es sind. –

Antwort

0

So etwas wie dies in der Tabelle mit sich selbst verbinden, sollte es tun:

SELECT c1.[Name], c1.Loc, c2.Loc 
FROM Companies c1, Companies c2 
WHERE c1.[Name] = c2.[Name] 
    AND c1.Loc LIKE c2.Loc & "*" 

Es wird wahrscheinlich langsam, aber mit 40k Aufzeichnungen sollte überschaubar sein.