2017-07-14 1 views
0

Dies ist meine aktuelle Abfrage:Rückkehr nur die oberste Zeile für jeden Join

SELECT 
    u.UserName, s.StatusName 
FROM 
    UserStatus us 
    JOIN Status s on s.StatusId = us.StatusID 
    JOIN Users u on u.UserId = us.UserId 
WHERE 
    us.UserId in (select UserId from Users) 
    AND us.DateCreated > '2017-07-14 00:00:00.000' 
ORDER BY 
    us.DateCreated desc 

Es gibt diesen:

enter image description here

Wie würde ich für jeden Benutzer nur den letzten Status erhalten?

EDIT:

Ich kann nicht nur SELECT TOP 2 tun, weil ich nicht weiß, wie viele Nutzer dort sein werden. Es könnte sein 500. Es könnte 10 sein

+0

Dies scheint zu Duplikat von [Wie kann ich Zeilen mit MAX (Spaltenwert), DISTINCT von einer anderen Spalte in SQL?] (Https://stackoverflow.com/questions/612231/how-can-is-select- rows-with-maxcolumn-value-distinct-von-another-column-in-sql) –

Antwort

2

Sie es in der where festlegen können, dass die Erstellungs-Datum pro Benutzer max Gefällt Ihnen dieses

SELECT 
    u.UserName, s.StatusName 
FROM 
    UserStatus us 
    JOIN Status s on s.StatusId = us.StatusID 
    JOIN Users u on u.UserId = us.UserId 
WHERE 
    us.UserId in (select UserId from Users) 
    AND us.DateCreated = (SELECT MAX(DateCreated) FROM UserStatus us2 WHERE 
us2.UserId = us.UserId) 
ORDER BY 
    us.DateCreated desc 
0

Versuchen Sie,

SELECT u.UserName, s.StatusName

zu

SELECT TOP(2) u.UserName, s.StatusName

, dass nur die oberen zwei Reihen wählen sollten! https://www.w3schools.com/sql/sql_top.asp

bearbeiten Siehe: Wenn die oberen Reihen ändert, vielleicht auf einem Prozentsatz des Gesamtstatus auf Basis wählen

+0

Sorry, meine OP-Formulierung war nicht sehr klar. Ich habe es bearbeitet. –

+0

TOP wird nicht funktionieren. In diesem Fall weiß ich, dass es nur 2 Benutzer gibt, also würde SELECT TOP 2 funktionieren. Aber das wird nicht immer so sein. Siehe die Änderungen an meinem OP –

+0

Gotcha. Ich vermute, ich hätte gedacht, dass Ihre erste Frage nicht so einfach war. Glaube nicht, dass meine Bearbeitung dir helfen wird, weil sie in mehreren Feldern denselben Status haben können ... –

Verwandte Themen