Ich muss alle Zeilen finden, die Teil einer Gruppe sind, die bestimmte Bedingungen erfüllt.Wie überprüft man, ob mindestens eine einer Gruppe von Zeilen einen bestimmten Wert hat
Ich definiere eine Gruppe als mehrere Zeilen, die einen Wert in der Gruppe Spalte teilen.
Eine relevante Gruppe muss mindestens eine Zeile mit "Eligible" auf "True" und mindestens zwei der Zeilen in der Gruppe müssen sich in einer anderen Spalte als "Group" oder "Eligible" voneinander unterscheiden.
Beispiel Tabelle
Group LastName FirstName Eligible
==========================================
1 Smith John True
1 Smith John False
2 Doe Beth True
2 Doe Jane False
2 Doe Jane False
3 Ward Bill True
4 Adams Sally True
4 Grimes Sally True
Gewünschtes Ergebnis
Group LastName FirstName Eligible
==========================================
2 Doe Beth True
2 Doe Jane False
2 Doe Jane False
4 Adams Sally True
4 Grimes Sally True
Die folgende Abfrage wird mich nahe
SELECT *
FROM ExampleTable
WHERE Group in
(SELECT Group
FROM ExampleTable
GROUP BY Group
HAVING count(distinct LastName) > 1 or count(distinct FirstName) > 1)
Das Problem ist, dass es zu viele Ergebnisse ist die Rückkehr, weil es nicht in Betracht zu ziehen ist ob einer der Datensätze in der Gruppe als berechtigt markiert ist.
Ich vermisse wahrscheinlich etwas Einfaches, aber ich kann nicht herausfinden, wie überprüft werden kann, ob ein Datensatz in der Gruppe Eligible auf true gesetzt ist, ohne zu prüfen, ob alle auf true gesetzt sind.