Ce que j'ai est fondamentalement un problème qui est facilement résolu avec plusieurs tables, mais je n'ai qu'une seule table pour le faire.SQL - SELECT MAX() et le champ d'accompagnement
Tenir compte de la table de base de données suivante
UserID UserName EmailAddress Source
3K3S9 Ben [email protected] user
SF13F Harry [email protected] 3rd_party
SF13F Harry [email protected] user
76DSA Lisa [email protected] user
OL39F Nick [email protected] 3rd_party
8F66S Stan [email protected] user
je dois sélectionner tous les champs, mais seulement qui chaque utilisateur une fois avec l'un de leurs adresses e-mail (le « plus grand » un tel que déterminé par la fonction MAX()). Ceci est le résultat que je suis après ...
UserID UserName EmailAddress Source
3K3S9 Ben [email protected] user
SF13F Harry [email protected] 3rd_party
76DSA Lisa [email protected] user
OL39F Nick [email protected] 3rd_party
8F66S Stan [email protected] user
Comme vous pouvez le voir, « Harry » n'apparaît qu'une fois avec son « plus haut » adresse e-mail la « source » correcponding
Actuellement ce qui se passe est que nous sommes en train de regrouper sur UserID, UserName et en utilisant MAX() pour EmailAddress et Source, mais le maximum de ces deux champs ne correspond pas toujours, ils doivent provenir du même enregistrement.
J'ai essayé un autre processus en rejoignant la table avec lui-même, mais j'ai seulement réussi à obtenir l'adresse email correcte mais pas la "source" correspondante pour cette adresse.
Toute aide serait appréciée comme je l'ai passé beaucoup trop de temps à essayer de résoudre ce déjà :)
Avez-vous une colonne supplémentaire avec une clé primaire définie? La paire (UserId, EmailAddress) est-elle unique? –