Freigeben über


Sortieren von Zeilen (Visuelle Datenbanktools)

Gilt für:SQL Server-

Sie können die Zeilen in einem Abfrageergebnis sortieren. Das heißt, Sie können eine bestimmte Spalte oder einen Bestimmten Satz von Spalten benennen, deren Werte die Reihenfolge der Zeilen im Resultset bestimmen.

Anmerkung

Die Sortierreihenfolge wird teilweise durch die Kollationsfolge der Spalte bestimmt. Sie können die Sortierreihenfolge im Dialogfeld "Sortierung" ändern.

Es gibt verschiedene Möglichkeiten, Abfrageergebnisse zu sortieren:

  • Sie können Zeilen in aufsteigender oder absteigender Reihenfolge anordnen

    Sql verwendet standardmäßig die Reihenfolge nach Spalten, um Zeilen in aufsteigender Reihenfolge anzuordnen. Wenn Sie beispielsweise die Buchtitel nach aufsteigender Preis anordnen möchten, sortieren Sie einfach die Zeilen nach der Preisspalte. Die resultierende SQL-Datei sieht möglicherweise wie folgt aus:

    SELECT *
    FROM titles
    ORDER BY price;
    

    Wenn Sie jedoch die Titel mit den teureren Büchern zuerst anordnen möchten, können Sie explizit eine höchste zuerst Sortierung angeben. Das heißt, Sie geben an, dass die Ergebniszeilen nach absteigenden Werten der Preisspalte angeordnet werden sollen. Die resultierende SQL-Datei sieht möglicherweise wie folgt aus:

    SELECT *
    FROM titles
    ORDER BY price DESC;
    
  • Sie können nach mehreren Spalten sortieren.

    Sie können z. B. ein Resultset mit einer Zeile für jeden Autor erstellen, zuerst nach Bundesland und dann nach Ort sortieren. Die resultierende SQL-Datei sieht möglicherweise wie folgt aus:

    SELECT *
    FROM authors
    ORDER BY state, city;
    
  • Sie können nach Spalten sortieren, die nicht im Resultset angezeigt werden

    Sie können beispielsweise zuerst ein Resultset mit den teuersten Titeln erstellen, auch wenn die Preise nicht angezeigt werden. Die resultierende SQL-Datei sieht möglicherweise wie folgt aus:

    SELECT title_id,
           title
    FROM titles
    ORDER BY price DESC;
    
  • Sie können nach abgeleiteten Spalten sortieren.

    Sie können z. B. ein Resultset erstellen, in dem jede Zeile einen Buchtitel enthält – mit den Büchern, die die höchsten Lizenzgebühren pro Kopie zahlen, die zuerst angezeigt werden. Die resultierende SQL-Datei sieht möglicherweise wie folgt aus:

    SELECT title,
           price * royalty / 100 AS royalty_per_unit
    FROM titles
    ORDER BY royalty_per_unit DESC;
    

    (Die Formel für die Berechnung der Lizenzgebühren, die jedes Buch pro Kopie verdient, wird hervorgehoben.)

    Zum Berechnen einer abgeleiteten Spalte können Sie die SQL-Syntax wie im vorherigen Beispiel verwenden oder eine benutzerdefinierte Funktion verwenden, die einen skalaren Wert zurückgibt. Weitere Informationen zu benutzerdefinierten Funktionen finden Sie in der SQL Server-Dokumentation.

  • Sie können gruppierte Zeilen sortieren

    Zum Beispiel; Sie können ein Resultset erstellen, in dem jede Zeile eine Stadt beschreibt, sowie die Anzahl der Autoren in dieser Stadt – mit den Städten, die viele Autoren enthalten, zuerst erscheinen. Die resultierende SQL-Datei sieht möglicherweise wie folgt aus:

    SELECT city,
           state,
           COUNT(*)
    FROM authors
    GROUP BY city, state
    ORDER BY COUNT(*) DESC, state;
    

    Die Abfrage wird als sekundäre Sortierspalte verwendet state . Wenn also zwei Staaten dieselbe Anzahl von Autoren haben, werden diese Zustände in alphabetischer Reihenfolge angezeigt.

  • Sie können nach internationalen Daten sortieren.

    Das heißt; Sie können eine Spalte mithilfe von Sortierkonventionen sortieren, die sich von den Standardkonventionen für diese Spalte unterscheiden. Sie können beispielsweise eine Abfrage schreiben, die alle Buchtitel von Jaime Patiño abruft. Um die Titel in alphabetischer Reihenfolge anzuzeigen, verwenden Sie eine spanische Sortierreihenfolge für die Titelspalte. Die resultierende SQL-Datei sieht möglicherweise wie folgt aus:

    SELECT title
    FROM authors
         INNER JOIN titleauthor
             ON authors.au_id = titleauthor.au_id
         INNER JOIN titles
             ON titleauthor.title_id = titles.title_id
    WHERE au_fname = 'Jaime'
          AND au_lname = 'Patiño'
    ORDER BY title COLLATE SQL_Spanish_Pref_CP1_CI_AS;