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.
InformationsquelleAutor SKJ | 2013-04-04
Schreibe einen Kommentar