Ti suggerirei di inserire le condizioni della clausola where nella tua dichiarazione select e restituire un "punteggio" per ogni record. Rimuovilo completamente dalla tua clausola where e potrebbe darti un'idea del motivo per cui hai record mancanti se vengono restituiti con un punteggio 0.
Caso quando condizione Allora 5quando condizione poi 4Etc...altrimenti 0Fine caso
Una volta che hai segnato i tuoi risultati, puoi ordinare in base al tuo punteggio decrescente e prendere il primo a persona. Oppure aggiungi ulteriori query esterne per restituire solo le righe con il punteggio massimo per persona.
Mi scuso per aver risposto dal mio telefono.