So finden Sie doppelte Werte in SQL Server
Ich bin mit SQL Server 2008. Ich habe eine Tabelle
Customers
customer_number int
field1 varchar
field2 varchar
field3 varchar
field4 varchar
... und viel mehr Spalten, ist egal, für meine Fragen.
Spalte kunden_nr ist pk. Ich bin versucht zu finden, doppelte Werte und einige Unterschiede zwischen Ihnen.
Bitte helfen Sie mir, finden alle Zeilen, die die gleiche
1) field1, field2, field3, field4
2) nur 3 Spalten gleich sind und einer von Ihnen nicht (außer Zeilen aus Liste 1)
3) nur 2 Spalten gleich und zwei von Ihnen sind nicht (außer Zeilen aus Liste 1 und Liste 2)
Am Ende: ich habe 3 Tabellen mit diese Ergebnisse und zusätzliche Gruppen-id, die gleiche für eine Gruppe von ähnlichen (Z. B. Für 3 Spalte gleich, Zeilen 3 gleichen Spalten gleich eine separate Gruppe)
Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das einfachste wäre wahrscheinlich eine gespeicherte Prozedur schreiben, um die Iteration über jede Gruppe von Kunden mit Duplikaten und legen Sie die passenden pro Gruppe Anzahl jeweils.
Aber, ich habe darüber nachgedacht und wahrscheinlich können Sie dies mit einer Unterabfrage. Hoffentlich habe ich nicht noch komplizierter machte als es sollte, aber das sollte Sie bekommen, was Sie suchen, für die erste Tabelle von Duplikaten (alle vier Felder). Beachten Sie, dass diese nicht getestet ist, so müssen Sie möglicherweise ein wenig Feintuning.
Grundsätzlich bekommt jede Gruppe von Bereichen, in denen es Duplikate sind, eine Gruppe für jeden, der bekommt dann alle Kunden, mit denen Felder und vergibt immer die gleiche Gruppe Anzahl.
Die anderen sind ein bisschen mehr kompliziert, aber als Sie brauchen, um erweitern die Möglichkeiten. Die drei-Felder-Gruppen wäre dann:
Hoffentlich produziert die richtigen Ergebnisse, und ich lasse die letzten so eine übung. 😀
SELECT ROW_NUMBER(), ... FROM (SELECT ... GROUP BY ...)
). Als smalldatetime geht, ich glaube nicht, dass es sollte egal solange=
funktioniert für Sie.Hier ist eine praktische Abfrage für die Suche nach Duplikaten in einer Tabelle. Angenommen, Sie möchten, finden Sie alle E-Mail-Adressen in eine Tabelle, die mehr als einmal vorhanden sind:
Könnte man dieses Verfahren auch verwenden, um die Zeilen suchen, die auftreten genau einmal:
Ich bin mir nicht sicher, ob Sie erfordern eine überprüfung auf Gleichheit, die auf verschiedenen Feldern (wie field1=field2).
Andernfalls kann dies ausreichend sein.
Bearbeiten
Fühlen Sie sich frei, einstellen der Testdaten, um uns mit ein, dass eine falsche Ausgabe nach Ihren Vorgaben.
Testdaten
Alle Gleich
Einem Feld unterschiedliche
Können Sie schreiben einfach etwas wie das zählen Duplikate Einträge, ich denke, es funktioniert :
Genießen
Es ist eine saubere Art und Weise, dies zu tun mit
CUBE()
, die aggregate von alle möglichen Kombinationen von SpaltenZahlen (0,1,2,4,8,3,5,6,9,10,12) sind nur die Bitmasken (0000,0001,0010,0100,...,1010,1100) von der grouping sets, dass wir uns kümmern-solche mit 4, 3 oder 2 matches.
Dann kommen diese wieder in der ursprünglichen Tabelle mit einer Technik, die behandelt Null-Werte in #duplicate_rows als Platzhalter