Ich habe eine Tabelle, die eine Tonne Zeilen (> 10K) hat. Die meisten Zeilen haben doppelte Rolle Werte, die mit dem Benutzername verbunden sind.SQL Server wählen verschiedene letzte Werte
Was ich versuche, durch verschieden ist wählen Reihen zu tun und aktuelle Rolle hinzugefügt von request_id. Ich habe es fast, aber der Teil, der mein Schwanz tritt ist, gibt es null
Werte in einigen der request_id Felder, weil diese Anforderungen vor dem Hinzufügen dieser Spalte gemacht wurden. I STILL müssen sie in die select statement
aufnehmen, falls ein Benutzer seit dem Update keine andere Anfrage eingegeben hat.
Hier ist ein Beispiel meiner Tabellenstruktur:
id | uname | role | request_id
0 | jsmith | User | null
1 | jsmith | Admin | null
2 | jsmith | Dude | null
3 | jsmith | Admin | 56
4 | jsmith | Dude | 56
5 | jsmith | Admin | 57
6 | jsmith | Dude | 57
Dies wäre das gewünschte Ergebnis:
0 | jsmith | User | null
5 | jsmith | Admin | 57
6 | jsmith | Dude | 57
Hier sind die Aussagen die ich bisher ausprobiert habe:
Verbinden
select distinct a.uname, a.role, a.request_id from (
select * from das_table
)
b join das_table a on b.role = a.role and b.request_id = a.request_id
where a.uname = 'jsmith'
Ergebnis: Diese Zeilen mit eliminiert request_id = NULL
MAX()
Das ist für mich nicht funktioniert Ich glaube, weil MAX()
nicht null
Werte zählt?
select distinct uname, role, max(request_id) as request_id from das_table where uname='jsmith'
group by uname, role, request_id
ähnliche Fragen Ich habe betrachtet:
Eine Einschränkung in meiner Frage, die ich denke, es ist anders als die andere macht ich recherchiert habe die request_id
ist null die Möglichkeit von zu sein.
Select distinct values from 1 column | SQL Server : select distinct by one column and by another column value |
Danke Mark !! Das hat den Trick gemacht! – ckpepper02
@ ckpepper02: Ich bin froh, dass ich helfen konnte. –