Erhalten Sie alle Datensätze, für die Top-N Verschiedene Werte
Ich habe eine BookAuthor
Tabelle wie unten (SQL Server 2008 R2 Ent):
BookID AuthorID
------ --------
43 676
43 76
43 354
71 89
71 76
99 71
64 50
64 39
64 354
Möchte ich, um alle Datensätze für die top 2 unterschiedliche BookID. So erwartete Ausgabe wird als unten:
BookID AuthorID
------ --------
43 676
43 76
43 354
71 89
71 76
Ich habe versucht, die unter einfachsten Abfrage und es ist nur die Rückkehr 2 Zeilen.
Select top 2 * from BookAuthor order by BookID ASC
So, wie kann ich Vorgehen ? Jede Hilfe ist willkommen.
- Das gewünschte Ergebnis nicht überein, wenn Sie waren bestellen, indem BookID aufsteigend. Wie wollen Sie zu entscheiden Top 2?
- Ich möchte die Ergebnisse für die top 2 unterschiedliche bookIDs. Das ist alle Zeilen, wo in bookID (43,71).
- In Abwesenheit einer Sortierung der Rückgabe Reihenfolge ist nicht garantiert. Auch wenn die Tabelle einen gruppierten index gibt es keine Garantie die Zeilen zurückgegeben werden, in dieser Reihenfolge. Wenn Sie möchten, dass die Zeile, um dann fügen Sie eine Spalte, rowNumber, dass die gewünschte Reihenfolge und Art auf Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die folgenden, um das
TOP 2 DISTINCT
BookIds:Sehen SQL Fiddle mit Demo
Sagten Sie, Sie wollen die Bücher mit der id 43, 71 zurückgegeben, weil das sind die top-2 Buch-ids, die Daten aber in einer Tabelle nicht von sich aus bestellt. Es sei denn, Sie haben eine andere Spalte, können Sie die Zeilen in dieser Reihenfolge, wenn Sie um bookid aufsteigend, dann werden Sie zurückkehren, 43, 64.
Was ist unten-Abfrage:
Es funktioniert gut für mich