Diese Frage unterscheidet sich von Get top 1 row of each group. In meiner Frage besteht jede Gruppe aus zwei Spalten (Spalte1, Spalte2), während in seiner Frage jede Gruppe aus nur einer Spalte (Spalte1) besteht. Ich habe auch versucht, die Antwort in seiner Frage zu ändern, aber gescheitert.Get obere n Zeile jeder Gruppe von zwei Spalten
Example:
Suppose n = 1
Input:
col1 col2 x Amt
A B x1 100
A B x2 200
C D x3 400
C D x4 500
...more data ...
Output:
col1 col2 x Amt
A B x2 200
C D x4 500
...more data ...
Was ich versucht ...select *, row_numne() over (partition by (col1, col2) order by ...
MAX() funktioniert fo r die Stichprobendaten, aber gibt es irgendeine Garantie, dass alle Daten (im Gegensatz zur Gruppierung) Spalten in der obersten Zeile immer den größten Wert für einen möglichen Gruppierungssatz haben? Wenn Ihre Abfrage beispielsweise in jeder Rechnung nach der Zeile mit den meisten Artikeln gesucht hat, würde eine Rechnung mit 1 Zeile mit 100 $ 1,00 Artikeln und 1 Zeile mit 1 $ 100 Artikel eine Zeile mit 100 $ 100 Artikeln anzeigen, wenn MAX() ist benutzt. Kreuzkorrelation ist stattdessen erforderlich. –