Ich habe einen Tisch wie diesen
%Vor%Beachten Sie, dass keine Spalte eindeutig ist. Es kann viele Zeilen mit Fld1 = 0 geben, aber für alle anderen Werte ist Fld1 eindeutig und es gibt möglicherweise viele Zeilen mit demselben Wert für Fld2.
Ich muss für jeden Wert von Fld2 eine Zeile mit dem höchsten Wert in Fld 1 auswählen. Das Ergebnis wäre also
%Vor% Eine Alternative zu GROUP BY
wäre die Verwendung einer Fensterfunktion wie row_number()
um das Ergebnis zu erhalten. Diese Funktion erstellt eine eindeutige Nummer, indem Sie Ihre Daten nach Fld2
partitionieren und nach Fld1 desc
:
Siehe SQL-Geige mit Demo . Es gibt Zeiten, in denen row_number
einfacher ist, wenn Sie zusätzliche Spalten haben, die eindeutig sind. Dies ergibt ein Ergebnis:
Tags und Links sql sql-server