COMMANDE dans la clause GROUP

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. genre, par exemple, vous pouvez trier tous les documents en System.Document. LastAuthor, tous les fichiers musicaux par système. Musique. AlbumArtist et tous les courriers électroniques par System. message. FromName.

Syntaxe

Voici la syntaxe de la clause ORDER dans le groupe :

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 », et ainsi de suite. Une plage pour System. photo. DateTaken inclut « 2006-1-1 » et « 2007-1-1 » pour une instruction comme GROUP sur 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. ouverture.

Le spécificateur de direction facultatif peut être ASC pour l’ordre croissant (de faible à élevé) ou DESC pour l’ordre décroissant (de haut en bas). Si vous ne fournissez pas de spécificateur de direction, la valeur par défaut, par ordre 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 consécutive jusqu’à ce que vous modifiiez explicitement la direction.

Les plages ou valeurs qui ne sont pas explicitement spécifiées dans une clause ORDER GROUP IN sont triées dans l’ordre croissant en fonction des valeurs de la colonne GROUP ON.

Exemples

L’exemple suivant regroupe les résultats par la propriété System. Kind. La requête commanderait le groupe « Program » par le nom de l’application et le groupe « Music » par titre d’album et par numéro de suivi. Le groupe null serait classé par le nom de l’élément. Tous les autres groupes seraient triés par date d’é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 URL de groupe par é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 dans cinq groupes et triés comme indiqué dans le tableau suivant.

Groupe Description Trié par
MINVALUE Éléments dont la date est antérieure à 2006-1-1 Trié par l’URL de l’élément, dans l’ordre croissant
2006-1-1 Éléments dont la date est le ou après le 2006-1-1 mais avant 2007-1-1 Trié par date de l’élément, dans l’ordre croissant
2007-1-1 Éléments dont la date est le ou après le 2007-1-1 mais avant 2008-1-1 Trié par valeur de genre, dans l’ordre croissant
2008-1-1 Éléments dont la date est le ou après le 2008-1-1 Trié par date de l’é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

REGROUPER... ... Gestion

Clause ORDER BY