Quello che ho è fondamentalmente un problema che è facilmente risolvibile con più tabelle, ma ho solo una singola tabella per farlo.SQL - SELEZIONA MAX() e relativo campo
Si consideri il seguente tabella del database
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
ho bisogno di selezionare tutti i campi, ma solo che ogni utente una volta insieme a uno dei loro indirizzi di posta elettronica (il "più grande" uno come determinato dal MAX (funzione)). Questo è il risultato sono dopo ...
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
Come si può vedere, "Harry" è solo dimostrato ancora una volta con il suo indirizzo di posta elettronica "più alto" del correcponding "fonte"
Attualmente ciò che sta accadendo è che stiamo raggruppando su UserID, UserName e usando MAX() per EmailAddress e Source, ma il massimo di quei due campi non corrisponde sempre, devono essere dallo stesso record.
Ho provato un altro processo unendo la tabella con se stesso, ma sono riuscito a ottenere solo l'indirizzo email corretto ma non la "fonte" corrispondente per quell'indirizzo.
Qualsiasi aiuto sarebbe apprezzato come ho speso troppo tempo cercando di risolvere questo già :)
Avete una colonna aggiuntiva con una chiave primaria definita? La coppia (UserId, EmailAddress) è unica? –