Partager via


ORDER IN GROUP Clause

La clause ORDER IN GROUP est utilisée conjointement avec l’instruction GROUP ON , qui retourne des jeux de résultats dans des groupes. La clause ORDER IN GROUP vous permet de trier chaque groupe retourné d’une manière différente. Si vous regroupez sur System.Kind, par exemple, vous pouvez trier tous les documents par System.Document.LastAuthor, tous les fichiers musicaux par System.Music.AlbumArtist et tous les e-mails par System.Message.FromName.

Syntaxe

Voici la syntaxe de la clause 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>]] ])

Le spécificateur de nom de groupe est une plage ou une valeur connue de la colonne de groupe, comme spécifié dans l’instruction GROUP ON. Par exemple, les valeurs connues pour System.Photo.ISOSpeed incluent « ISO-100 », « ISO-200 », etc. Une plage pour System.Photo.DateTaken inclut « 2006-1-1 » et « 2007-1-1 » pour une instruction telle que GROUP ON System.ItemDate ['2006-1-1', '2007-1-1'].

Le spécificateur de colonne doit être une colonne valide spécifiée dans l’instruction GROUP ON ou SELECT. Vous pouvez inclure plusieurs colonnes, séparées par des virgules. Par exemple, si vous regroupez sur System.Photo.ISOSpeed, vous pouvez trier toutes les photos ISO-100, d’abord par System.Photo.ShutterSpeed, puis par System.Photo.Aperture.

Le spécificateur de direction facultatif peut être ASC pour l’ascendant (faible à élevé) ou DESC pour la décroissante (élevé à faible). Si vous ne fournissez pas de spécificateur de direction, la valeur par défaut, croissant, est utilisée. Si vous spécifiez plusieurs colonnes, mais que vous ne spécifiez pas toutes les directions, la direction que vous spécifiez en dernier est appliquée à chaque colonne successive jusqu’à ce que vous modifiez explicitement la direction.

Les plages ou valeurs qui ne sont pas explicitement spécifiées dans une clause ORDER GROUP IN sont triées par ordre croissant par les valeurs de la colonne GROUP ON.

Exemples

L’exemple suivant regroupe les résultats par la propriété System.Kind. La requête triait le groupe « program » par le nom de l’application et le groupe « musique » par titre de l’album et numéro de piste. Le groupe NULL est classé en fonction du nom de l’élément. Tous les autres groupes sont classés en fonction de la date de l’élément.

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’exemple suivant regroupe les résultats par la propriété System.ItemDate, puis trie chaque groupe par URL d’élément, type ou nom.

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)

Les résultats de la requête précédente sont retournés en cinq groupes et triés comme décrit dans le tableau suivant.

Groupe Description Trié par
MINVALUE Éléments dont la date est antérieure à 2006-1-2006 Trié par l’URL de l’élément, dans l’ordre croissant
2006-1-1 Éléments ayant des dates le ou après 2006-1-2006 mais avant 2007-1-2007 Trié par date d’élément, dans l’ordre croissant
2007-1-1 Éléments ayant des dates le ou après 2007-1-2007 mais avant 2008-1-2008 Trié par valeur de type, dans l’ordre croissant
2008-1-1 Éléments ayant des dates le ou après 2008-1-2008 Trié par date d’élément, dans l’ordre croissant
NULL Éléments sans valeur dans la colonne System.ItemDate Trié par nom d’élément, dans l’ordre croissant

 

Informations de référence

GROUPEZ SUR ... SUR... Déclaration

ORDER BY Clause