2016-11-06 2 views
1

Ich habe eine Tabelle, die ich Datensätze zurückgeben möchte, die mehr als eine BSID haben.SQL: Datensätze mit mehr als einer Übereinstimmung zurückgeben

Beispiel:

FirstName LastName CustomerID 
A   Apple  12345 
AB   Orange  12451 
AC   Durian  44123 
BODY  SHOP  11223 
BODY  SHOP  11224 
BODY  SHOP  11225 

Frage:

Wie kehre ich nur die unteren drei, wo diese bestimmte Person drei verschiedene Kundennummer hat?

Ich habe versucht,

select Firstname, lastname, BSID, count(*) 
from table Profile 
group by firstname, lastname, BSID 
having count(*) > 1 

schreiben, aber das Ergebnis zurück, die alle 6 Reihen.

+0

was hast du bisher gemacht? (auf eigene Faust) –

+0

Was ist eine BSID? –

Antwort

0

Eine Option ist die Verwendung der Unterabfrage, die Sie bereits geschrieben haben, um Paare von Vornamen/Nachnamen zu identifizieren, die Sie behalten möchten, und diese dann wieder an Ihre Haupttabelle anzuhängen.

SELECT t1.* 
FROM Profile t1 
INNER JOIN 
(
    SELECT FirstName, Lastname, BSID 
    FROM Profile 
    GROUP BY FirstName, Lastname, BSID 
    HAVING COUNT(*) > 1 
) t2 
    ON t1.Firstname = t2.Firstname AND 
     t1.Lastname = t2.Lastname AND 
     t1.BSID = t2.BSID 
0

In Amazon Redshift, wenn Sie BIS auch in Gruppe von Klausel enthalten, dann wird es alle Werte zurück. Da auf Gruppierung mit BIS, gibt es keine doppelten Datensätze. Unten würde die resultset sein, die Sie empfangen werden,

FirstName LastName CustomerID Count 
A   Apple  12345  1  
AB   Orange  12451  1 
AC   Durian  44123  1 
BODY  SHOP  11223  1 
BODY  SHOP  11224  1 
BODY  SHOP  11225  1 

Und Sie Bedingung Überprüfung Klausel als count (*)> in 1 hat also alle Zeilen wird diese Bedingung erfüllen.

Aber Ihr gewünschtes Ergebnis wie unten sein würde,

FirstName LastName Count 
A   Apple  1  
AB   Orange  1 
AC   Durian  1 
BODY  SHOP  3 

Daher müssen Sie Ihre Abfrage wie unten ändern,

select Firstname, lastname, count(*) 
from table Profile 
group by firstname, lastname 
having count(*) > 1 

Nur BIS entfernen "Select" und "Gruppe von "Klauseln.

Ich hoffe, dies sollte Ihr Problem lösen.

Verwandte Themen