2016-07-31 26 views
3

Wie lautet die SQL-Abfrage, um die oberste 4. Zeile für jede ID # auszuwählen?Wie wählt man in SQL Server die oberste 4. Zeile?

Es ist nicht Top 4 Reihe von Datensätzen. Ich versuche, nur 4. Reihe des Rekordes/der Spalte für jede Identifikation auszuwählen.

+0

Sind die Zeilen in aufsteigender oder absteigender Reihenfolge angeordnet? Können Sie bitte ein Beispiel geben, wie die Ausgabe sein soll? –

+0

Jede Rechnungs-ID hat mehrere Transaktionszeilen. Ich muss nur die vierte Zeile von oben auswählen. – goofyui

+0

Wenn Sie MySQL verwenden dann gibt es Limit-Klausel, um Offset n Anzahl der Zeilen abgerufen –

Antwort

7

Verwenden Sie die row_number Funktion:

With cte as 
(
    select 
     *, 
     row_number() over (partition by id order by id) as rownum 
    from 
     table 
) 
select * 
from cte 
where rownum = 4 

Reihenfolge ändern, indem in der Partition entsprechend Ihre Definition von oben

1

Sie können die folgende Abfrage verwenden und die erforderliche ID der Tabelle passieren den spezifischen 4. zu bekommen Zeile:

SELECT * 
FROM 
    (SELECT 
     m.CityId, m.Country, m.Location, m.NoofDweller, 
     ROW_NUMBER() OVER (ORDER BY Country ASC) AS RowNumber 
    FROM 
     Cities m 
    WHERE 
     m.Country = 3 -- Just pass the required ID of the table 
    ) AS Details 
WHERE 
    RowNumber = 4 -- Gets details of the 4th row of the given ID