Clausola ORDER IN GROUP
La clausola ORDER IN GROUP viene utilizzata insieme all'istruzione GROUP ON , che restituisce i set di risultati nei gruppi. La clausola ORDER IN GROUP consente di ordinare ogni gruppo restituito in modo diverso. Se si raggruppa in System.Kind, ad esempio, è possibile ordinare tutti i documenti in base a System.Document.LastAuthor, tutti i file musicali di System.Music.AlbumArtist e tutti i messaggi di posta elettronica di System.Message.FromName.
Sintassi
Di seguito è riportata la sintassi della clausola ORDER IN GROUP:
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>]] ])
L'identificatore di nome gruppo è un intervallo o un valore noto della colonna del gruppo, come specificato nell'istruzione GROUP ON. Ad esempio, i valori noti per System.Photo.ISOSpeed includono "ISO-100", "ISO-200" e così via. Un intervallo per System.Photo.DateTaken include '2006-1-1' e '2007-1-1' per un'istruzione come GROUP ON System.ItemDate ['2006-1-1', '2007-1-1'].
L'identificatore di colonna deve essere una colonna valida specificata nell'istruzione GROUP ON o SELECT. È possibile includere più colonne, separate da virgole. Ad esempio, se si raggruppa su System.Photo.ISOSpeed, è possibile ordinare tutte le foto ISO-100, prima per System.Photo.ShutterSpeed e quindi per System.Photo.Aperture.
L'identificatore di direzione facoltativo può essere ASC per l'ordine crescente (da basso a alto) o DESC per decrescente (da alto a basso). Se non si specifica un identificatore di direzione, viene utilizzata l'impostazione predefinita crescente. Se si specificano più colonne, ma non si specificano tutte le direzioni, la direzione specificata viene applicata per ogni colonna successiva fino a quando non si modifica in modo esplicito la direzione.
Gli intervalli o i valori non specificati in modo esplicito in una clausola ORDER GROUP IN vengono ordinati in ordine crescente in base ai valori nella colonna GROUP ON.
Esempio
Nell'esempio seguente i risultati sono raggruppati in base alla proprietà System.Kind. La query ordina il gruppo "programma" in base al nome dell'applicazione e al gruppo "music" in base al titolo e al numero di traccia dell'album. Il gruppo NULL verrà ordinato in base al nome dell'elemento. Tutti gli altri gruppi vengono ordinati in base alla data dell'elemento.
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)
L'esempio seguente raggruppa i risultati in base alla proprietà System.ItemDate e quindi ordina ogni gruppo in base all'URL dell'elemento, al tipo o al nome.
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)
I risultati della query precedente vengono restituiti in cinque gruppi e ordinati come descritto nella tabella seguente.
Gruppo | Descrizione | Ordinamento |
---|---|---|
MINVALUE | Elementi con date precedenti al 2006-1-1 | Ordinamento in base all'URL dell'elemento, in ordine crescente |
2006-1-1 | Elementi con date successive o successive al 2006-1-1 ma prima del 2007-1-1 | Ordinamento in base alla data dell'elemento, in ordine crescente |
2007-1-1 | Elementi con date successive o successive al 2007-1-1 ma prima del 2008-1-1 | Ordinato in base al valore di tipo, in ordine crescente |
2008-1-1 | Elementi con date successive al 2008-1-1 | Ordinamento in base alla data dell'elemento, in ordine crescente |
NULL | Elementi senza valore nella colonna System.ItemDate | Ordinato in base al nome dell'elemento, in ordine crescente |
Argomenti correlati
-
Riferimento