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 beispielsweise 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 Gruppennamenspezifizierer 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ären beispielsweise "ISO-100", "ISO-200" usw. Ein Bereich für System.Photo.DateTaken enthält "2006-1-1" und "2007-1-1" für eine Anweisung wie GROUP ON System.ItemDate ['2006-1-1', '2007-1-1'].
Der Spaltenbezeichner muss eine gültige Spalte sein, die entweder in der GROUP ON- oder der SELECT-Anweisung angegeben ist. Sie können mehrere Spalten einschließen, die durch Kommas getrennt sind. Wenn Sie beispielsweise nach System.Photo.ISOSpeed gruppieren, können Sie alle ISO-100-Fotos sortieren, zuerst nach System.Photo.ShutterSpeed und dann nach System.Photo.Aperture.
Der optionale Richtungsspezifizierer kann entweder ASC für aufsteigend (niedrig bis hoch) oder DESC für absteigend (hoch bis niedrig) sein. Wenn Sie keinen Richtungsspezifizierer angeben, wird der Standard (aufsteigend) verwendet. Wenn Sie mehr als eine Spalte angeben, aber nicht alle Richtungen angeben, wird die zuletzt angegebene Richtung auf jede aufeinanderfolgende 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 GROUP ON-Spalte sortiert.
Beispiele
Im folgenden Beispiel werden die 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 wird nach dem Elementnamen sortiert. 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 jede Gruppe nach Element-URL, Art 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 werden in fünf Gruppen zurückgegeben und wie in der folgenden Tabelle beschrieben sortiert.
Gruppieren | Beschreibung | Sortiert nach: |
---|---|---|
MINVALUE | Elemente mit Datumsangaben vor dem 1.1.2006 | Sortiert nach der URL des Elements in aufsteigender Reihenfolge |
2006-1-1 | Elemente mit Datumsangaben am oder nach dem 1.1.2006, aber vor dem 1.1.2007 | Sortiert nach Elementdatum in aufsteigender Reihenfolge |
2007-1-1 | Elemente mit Datumsangaben am oder nach dem 1.1.2007, aber vor dem 1.1.2008 | Sortiert nach Artwert in aufsteigender Reihenfolge |
2008-1-1 | Elemente mit Datumsangaben am oder nach dem 1.1.2008 | Sortiert nach Elementdatum in aufsteigender Reihenfolge |
NULL | Elemente ohne Wert in der Spalte System.ItemDate | Sortiert nach Elementname in aufsteigender Reihenfolge |
Zugehörige Themen