653 Stimmen

Abrufen der Zeile, die den Max-Wert für eine Spalte enthält

Tabelle:

UserId, Value, Date.

Ich möchte die UserId, Wert für die max (Datum) für jede UserId zu erhalten. Das heißt, der Wert für jede UserId, die das späteste Datum hat. Gibt es eine Möglichkeit, dies einfach in SQL zu tun? (Vorzugsweise Oracle)

更新しました。 Entschuldigung für etwaige Unklarheiten: Ich muss ALLE UserIds abrufen. Aber für jede UserId, nur die Zeile, wo dieser Benutzer das neueste Datum hat.

0voto

Valerion Punkte 813

Das sollte so einfach sein wie:

SELECT UserId, Value
FROM Users u
WHERE Date = (SELECT MAX(Date) FROM Users WHERE UserID = u.UserID)

0voto

GateKiller Punkte 71039

Ich denke, das sollte funktionieren?

Select
T1.UserId,
(Select Top 1 T2.Value From Table T2 Where T2.UserId = T1.UserId Order By Date Desc) As 'Value'
From
Table T1
Group By
T1.UserId
Order By
T1.UserId

0voto

Zsolt Botykai Punkte 48177
select userid, value, date
  from thetable t1 ,
       ( select t2.userid, max(t2.date) date2 
           from thetable t2 
          group by t2.userid ) t3
 where t3.userid t1.userid and
       t3.date2 = t1.date

IMHO funktioniert das. HTH

-1voto

王奕然 Punkte 3461
select   UserId,max(Date) over (partition by UserId) value from users;

-1voto

Smart003 Punkte 1087

Siehe dieser Link Wenn Ihre Fragen dieser Seite ähnlich sind, würde ich Ihnen die folgende Abfrage empfehlen, die die Lösung für diesen Link liefert

select distinct sno,item_name,max(start_date) over(partition by sno),max(end_date) over(partition by sno),max(creation_date) over(partition by sno), max(last_modified_date) over(partition by sno) from uniq_select_records order by sno,item_name asc;

liefert genaue Ergebnisse in Bezug auf diesen Link

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X