2016-01-06 4 views
6

Ich versuche gerade, eine Datenbank von Mailing-Abonnenten zu bereinigen, die ein ehemaliger Mitarbeiter erstellt hat. Ich konnte die meisten Probleme (hauptsächlich Duplikate) konsolidieren und beheben, aber ich habe Instanzen von Abonnenten mit doppelten Datensätzen, weil sie mehrere Regionen abonniert haben. Was ich tun möchte, ist diese doppelte Datensätze in 1.SQL, wie man ähnliche Aufzeichnungen in einzelne Reihe von der gleichen Tabelle zusammenführt?

fusionieren Hier wird ein redigiert aktuelles Beispiel eines doppelten Datensatz, die ich mag würde fusionieren:

id  first  last address truck machinery gl ne nw 
------------------------------------------------------------------------ 
1  Chuck  G.... 12 Lorem 1      1 
2  Chuck  G.... 12 Lorem   1      1 
3  Chuck  G.... 12 Lorem   1     1 

Und ich möchte die fusionieren 2 in 1 Datensatz, und löschen Sie alle Duplikate (einige haben bis zu 9 Duplikate) wie folgt aus:

id  first  last address truck machinery gl ne nw 
------------------------------------------------------------------------ 
1  Chuck  G.... 12 Lorem 1  1   1  1  1 
+0

Was, wenn einige Zeilen unterschiedliche Werte in derselben Spalte enthalten, z. B. Maschinen = 1,2,3? Welcher Wert muss ausgewählt werden? – krokodilko

+0

In diesen Fällen ist es immer nur eine '1' oder NULL. Sein Zweck besteht darin, einfach zu definieren, ob sie diese Ausgabe abonnieren oder nicht. Wenn also irgendwo in den doppelten Zeilen eine '1' existiert, dann sollte '1' verwendet werden. –

Antwort

5

Verwenden Group By und Max/Min Aggregate

SELECT id, 
     first, 
     last, 
     address, 
     Max(truck)  AS truck, 
     Max(machinery) AS machinery, 
     Max(gl)  AS gl, 
     Max(ne)  AS ne, 
     Max(nw)  AS nw 
FROM yourtable 
GROUP BY id, 
      first, 
      last, 
      address 
+0

Brilliant. So einfach. Mit dieser Art der Auswahl konnte ich eine neue Liste von Abonnenten ohne Duplikate erstellen und alle entsprechenden Daten zusammenführen. –

Verwandte Themen