次の方法で共有


ORDER IN GROUP 句

ORDER IN GROUP 句は、グループで結果セットを返す GROUP ON ステートメントと組み合わせて使用されます。 ORDER IN GROUP 句を使用すると、返された各グループを異なる方法で並べ替えることができます。 たとえば、System.Kind でグループ化した場合は、System.Document.LastAuthor、System.Music.AlbumArtist によるすべての音楽ファイル、System.Message.FromName によるすべての電子メールで、すべてのドキュメントを並べ替えることができます。

構文

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>]] ])

グループ名指定子は、GROUP ON ステートメントで指定されているグループ列の範囲または既知の値です。 たとえば、System.Photo.ISOSpeed の既知の値には、'ISO-100'、'ISO-200' などが含まれます。 System.Photo.DateTaken の範囲には、GROUP ON System.ItemDate ['2006-1-1'、'2007-1-1' などのステートメントの '2006-1-1' と '2007-1-1' が含まれます。

列指定子は、GROUP ON または SELECT ステートメントで指定された有効な列である必要があります。 複数の列をコンマで区切って含めることができます。 たとえば、System.Photo.ISOSpeed でグループ化した場合、すべての ISO-100 写真を、最初に System.Photo.ShutterSpeed、次に System.Photo.Aperture で並べ替えることができます。

オプションの方向指定子には、昇順 (低から高) の場合は ASC、降順の場合は DESC (高から低) のいずれかを指定できます。 方向指定子を指定しない場合は、既定の昇順が使用されます。 複数の列を指定しても、すべての方向を指定しない場合は、方向を明示的に変更するまで、最後に指定した方向が連続する各列に適用されます。

ORDER GROUP IN 句で明示的に指定されていない範囲または値は、GROUP ON 列の値によって昇順で並べ替えられます。

次の例では、System.Kind プロパティによって結果をグループ化します。 このクエリでは、アプリケーション名で "program" グループを並べ替え、アルバム タイトルとトラック番号で "music" グループを並べ替えます。 NULL グループは、項目名で並べ替えます。 他のすべてのグループは、アイテムの日付順に並べ替えます。

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)

次の例では、System.ItemDate プロパティで結果をグループ化し、各グループを項目の URL、種類、または名前で並べ替えます。

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)

上記のクエリの結果は 5 つのグループで返され、次の表に示すように並べ替えられます。

形容 並べ替え
MINVALUE 2006-1-1 より前の日付のアイテム アイテムの URL で昇順に並べ替えられます
2006-1-1 2006-1-1 以降、2007-1-1 より前の日付のアイテム アイテムの日付で昇順で並べ替え
2007-1-1 2007-1-1 以降、2008-1-1 より前の日付のアイテム 種類の値で昇順で並べ替え
2008-1-1 2008-1-1 以降の日付のアイテム アイテムの日付で昇順で並べ替え
NULL System.ItemDate 列に値がない項目 項目名で昇順に並べ替え

 

リファレンス

GROUP ON ...オーバー。。。ステートメント

ORDER BY 句