ORDER IN GROUP-component

De COMPONENT ORDER IN GROUP wordt gebruikt in combinatie met de instructie GROUP ON, die resultatensets in groepen retourneert. Met de COMPONENT ORDER IN GROUP kunt u elke geretourneerde groep op een andere manier sorteren. Als u bijvoorbeeld groeperen op System.Kind, kunt u alle documenten sorteren op System.Document.LastAuthor, alle muziekbestanden op System.Music.AlbumArtist en alle e-mailberichten op System.Message.FromName.

Syntaxis

Hier volgt de syntaxis van de component 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>]] ])

De groepsnaamaanduiding is een bereik of een bekende waarde uit de groepskolom, zoals opgegeven in de INSTRUCTIE GROUP ON. Bekende waarden voor System.Photo.ISOSpeed bevatten bijvoorbeeld 'ISO-100', 'ISO-200', enzovoort. Een bereik voor System.Photo.DateTaken zou '2006-1-1' en '2007-1-1' bevatten voor een instructie zoals GROUP ON System.ItemDate ['2006-1-1', '2007-1-1'].

De kolomaanduiding moet een geldige kolom zijn die is opgegeven in de GROUP ON- of select-instructie. U kunt meer dan één kolom opnemen, gescheiden door komma's. Als u bijvoorbeeld groepeert op System.Photo.ISOSpeed, kunt u alle ISO-100 foto's sorteren, eerst op System.Photo.ShutterSpeed en vervolgens op System.Photo.Aperture.

De optionele richtingsaanduiding kan ASC zijn voor oplopend (laag tot hoog) of DESC voor aflopend (hoog tot laag). Als u geen richtingaanduiding opgeeft, wordt de standaardwaarde, oplopend, gebruikt. Als u meer dan één kolom opgeeft, maar niet alle richtingen opgeeft, wordt de richting die u als laatste opgeeft, toegepast op elke opeenvolgende kolom totdat u de richting expliciet wijzigt.

Bereiken of waarden die niet expliciet zijn opgegeven in een COMPONENT ORDER GROUP IN, worden in oplopende volgorde gesorteerd op de waarden in de kolom GROUP ON.

Voorbeelden

In het volgende voorbeeld worden resultaten gegroepeerd op basis van de eigenschap System.Kind. De query rangschikt de groep 'program' op de naam van de toepassing en de groep 'muziek' op albumtitel en nummer. De null- groep wordt geordend op de itemnaam. Alle andere groepen zouden op volgorde van de itemdatum worden uitgevoerd.

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)

Het volgende voorbeeld groepeert resultaten op de eigenschap System.ItemDate en sorteert vervolgens elke groep op item-URL, soort of naam.

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)

De resultaten van de voorgaande query worden geretourneerd in vijf groepen en gesorteerd zoals beschreven in de volgende tabel.

Groep Beschrijving Gesorteerd op
MINVALUE Items met datums vóór 2006-1-1 Gesorteerd op de URL van het item, in oplopende volgorde
2006-1-1 Items met datums op of na 2006-1-1, maar vóór 2007-1-1 Gesorteerd op itemdatum, in oplopende volgorde
2007-1-1 Items met datums op of na 2007-1-1, maar vóór 2008-1-1 Gesorteerd op soortwaarde, in oplopende volgorde
2008-1-1 Items met datums op of na 2008-1-1 Gesorteerd op itemdatum, in oplopende volgorde
NULL- Items zonder waarde in de kolom System.ItemDate Gesorteerd op itemnaam, in oplopende volgorde

 

GROEP OP ... OVER... Instructie

ORDER BY-component