Ich bin sicher, jemand wird sofort erkennen, was für mich ist rätselhaft, also danke im Voraus. Ich habe eine Unterabfrage, die eine Gruppierung nach Name und PLZ-Feldern verwendet und nach Gruppen zählt> 1. Ich erhalte 528 Gruppen. Ich möchte die einzelnen vollständigen Datensätze sehen, also mache ich einen inneren Join zu diesem Ergebnis, das auf den Feldern Name und Postleitzahl festgelegt ist. Ich erwarte, dass mindestens 2 x 528 Datensätze als Minimum angezeigt werden, da jede Unterabfragezeile mindestens zwei Datensätze darstellt. Aber ich bekomme nur 190 Zeilen und kann den Fehler in meiner Logik nicht herausfinden.SQLGroup-by Unterabfrage
select m1.*
from MasterList m1
join
(
select FirstName, LastName, Zipcode, count(*) Cnt
from MasterList m2
group by FirstName, LastName,Zipcode
having count(*) > 1
) x
on m1.FirstName = x.FirstName and
m1.LastName = x.LastName and
m1.Zipcode = x.Zipcode
Ich hoffe, das ist ausreichend Detail. Ich muss nicht verstehen, wie der Join funktioniert. Aber ich bekomme das gleiche Ergebnis, wenn ich Filterbedingungen anstelle von Join-Bedingungen verwende.
Thanks again, JimK
'jede Unterabfragezeile repräsentiert mindestens zwei Datensätze' ist falsch. Für jede Zeile in 'm1' haben Sie 0 oder 1 Zeile in' x' –
Geben Sie Beispieldaten, erwartetes Ergebnis und Erklärung von ihnen und kann jemand Ihnen helfen, Ihre Aufgabe zu lösen –
Was ich meinte war das für jede Zeile in x, es sollte mindestens zwei Zeilen in m1 geben. – user3091705