2016-07-19 4 views
0

Mein Ziel ist es, Duplikate in der Identity-Spalte zu finden. Ich möchte nur die Identitäten und Logins für Benutzer mit Duplikaten anzeigen. Dies ist ein Beispiel für die Daten, die ich habe:Nur Doppelte Datensätze basierend auf Kriterien anzeigen

Id Login  Identity 
101 JamesT  15742 
102 SarahS  21789 
103 TonyP  15742 
104 LizB   23444 
105 EmmaT  14441 
106 ToniaL  14441 

ich wie etwas zeigen wollen:

Login  Identity 
EmmaT  14441 
ToniaL  14441  
JamesT  15742 
TonyP  15742 

Dies wird angezeigt, welche Benutzer Duplikate durch den doppelten Wert sortiert haben. Ich habe Schwierigkeiten, eine Abfrage zu schreiben, die: a) nur doppelte Werte zeigt, während b) auch Logins anzeigt. Das Ausführen eines COUNT scheint es erforderlich zu machen, dass ich auch bei der Anmeldung gruppiere, was in diesem Fall nicht funktioniert.

Jede Hilfe wird sehr geschätzt!

Antwort

2

Ein Verfahren verwendet Funktionen Fenster:

select t.* 
from (select t.*, 
      min(id) over (partition by identity) as minid, 
      max(id) over (partition by identity) as maxid 
     from t 
    ) t 
where minid <> maxid; 

Die oben findet zwei verschiedene IDs. Wenn Sie nur mehrere Zeilen haben möchten, verwenden Sie stattdessen count(*):

select t.* 
from (select t.*, 
      count(0) over (partition by identity) as cnt 
     from t 
    ) t 
where cnt > 1;