Freigeben über


ORDER IN GROUP-Klausel

Die ORDER IN GROUP-Klausel wird in Verbindung mit der GROUP ON-Anweisung verwendet, die Resultsets in Gruppen zurückgibt. Mit der ORDER IN GROUP-Klausel können Sie jede zurückgegebene Gruppe auf eine andere Weise sortieren. Wenn Sie z. B. nach System.Kind gruppieren, können Sie dann alle Dokumente nach System.Document.LastAuthor, alle Musikdateien nach System.Music.AlbumArtist und alle E-Mails nach System.Message.FromName sortieren.

Syntax

Es folgt die Syntax der ORDER IN GROUP-Klausel:

GROUP ON <group column and optional ranges>
OVER (SELECT ... FROM SystemIndex
    ORDER 
        IN GROUP '<group name>' BY <column> [<direction>] [,<column> [<direction>]]
        [IN GROUP '<group name>' BY <column> [<direction>] [,<column> [<direction>]] ]
        [BY <column> [<direction>] [,<column> [<direction>]] ])

Der Gruppennamenbezeichner ist ein Bereich oder ein bekannter Wert aus der Gruppenspalte, wie in der GROUP ON-Anweisung angegeben. Bekannte Werte für System.Photo.ISOSpeed würden z. B. "ISO-100", "ISO-200" usw. enthalten. Ein Bereich für System.Photo.DateTaken würde "2006-1-1" und "2007-1-1" für eine Anweisung wie GROUP ON System.ItemDate ['2006-1-1', '2007-1-1'] enthalten.

Der Spaltenbezeichner muss eine gültige Spalte sein, die entweder in der GROUP ON- oder select-Anweisung angegeben ist. Sie können mehrere Spalten einschließen, getrennt durch Kommas. Wenn Sie beispielsweise nach System.Photo.ISOSpeed gruppieren, können Sie alle ISO-100-Fotos zuerst nach System.Photo.ShutterSpeed und dann nach System.Photo.Blend sortieren.

Der optionale Richtungsbezeichner kann entweder ASC für aufsteigend (niedrig bis hoch) oder DESC für absteigend (hoch bis niedrig) sein. Wenn Sie keinen Richtungsbezeichner angeben, wird der Standard, aufsteigend, verwendet. Wenn Sie mehrere Spalten angeben, aber nicht alle Richtungen angeben, wird die von Ihnen angegebene Richtung auf jede aufeinander folgende Spalte angewendet, bis Sie die Richtung explizit ändern.

Bereiche oder Werte, die nicht explizit in einer ORDER GROUP IN-Klausel angegeben sind, werden in aufsteigender Reihenfolge nach den Werten in der SPALTE GROUP ON sortiert.

Beispiele

Im folgenden Beispiel werden ergebnisse nach der System.Kind-Eigenschaft gruppiert. Die Abfrage würde die Gruppe "Programm" nach dem Anwendungsnamen und der Gruppe "Musik" nach Albumtitel und Titelnummer sortieren. Die NULL- Gruppe würde nach dem Elementnamen sortiert werden. Alle anderen Gruppen würden nach dem Elementdatum sortiert.

GROUP ON System.Kind 
OVER (SELECT System.ItemUrl, System.Music.AlbumTitle, System.Music.TrackNumber, System.ItemName, System.ItemDate, System.Kind FROM SystemIndex
    ORDER 
        IN GROUP 'program' BY System.ApplicationName ASC
        IN GROUP 'music' BY System.Music.AlbumTitle ASC, System.Music.TrackNumber ASC
        IN GROUP NULL BY System.ItemName
        BY System.ItemDate DESC)

Im folgenden Beispiel werden die Ergebnisse nach der System.ItemDate-Eigenschaft gruppiert und dann nach Element-URL, Typ oder Name sortiert.

GROUP ON System.ItemDate ['2006-1-1', '2007-1-1', '2008-1-1'] 
OVER (SELECT System.ItemUrl, System.ItemName, System.ItemDate System.Kind FROM SystemIndex
    ORDER 
        IN GROUP MINVALUE BY System.ItemUrl ASC
        IN GROUP '2007-1-1' BY System.Kind
        IN GROUP NULL BY System.ItemName)

Die Ergebnisse der vorherigen Abfrage würden in fünf Gruppen zurückgegeben und wie in der folgenden Tabelle beschrieben sortiert.

Gruppe Beschreibung Sortiert nach
MINWERT Elemente mit Datumsangaben vor 2006-1-1 Sortiert nach der URL des Elements in aufsteigender Reihenfolge
2006-1-1 Elemente mit Datumsangaben am oder nach 2006-1-1, aber vor 2007-1-1 Sortiert nach Elementdatum in aufsteigender Reihenfolge
2007-1-1 Elemente mit Datumsangaben am oder nach 2007-1-1, aber vor 2008-1-1 Sortiert nach Typwert in aufsteigender Reihenfolge
2008-1-1 Elemente mit Datumsangaben am oder nach 2008-1-1 Sortiert nach Elementdatum in aufsteigender Reihenfolge
NULL- Elemente ohne Wert in der Spalte "System.ItemDate" Sortiert nach Elementname in aufsteigender Reihenfolge

 

Referenz-

GRUPPIEREN NACH ... ÜBER... Anweisung

ORDER BY-Klausel