Ich würde vorschlagen, dass Sie Ihre where-Klauselbedingungen in Ihre select-Anweisung einfügen und eine "Punktzahl" für jeden Datensatz zurückgeben. Entfernen Sie es vollständig aus Ihrer Where-Klausel und es kann Ihnen Aufschluss darüber geben, warum Sie fehlende Datensätze haben, wenn sie mit einer Punktzahl von 0 zurückgegeben werden.
Fall Wenn Bedingung Dann 5Wenn Bedingung Dann 4Etc...else 0Fall beenden
Sobald Sie Ihre Ergebnisse bewertet haben, können Sie nach Ihrer Punktzahl absteigend sortieren und das erste pro Person nehmen. Oder fügen Sie zusätzliche äußere Abfragen hinzu, um nur die Zeilen mit der maximalen Punktzahl pro Person zurückzugeben.
Entschuldigung für die Antwort von meinem Telefon.