次の方法で共有


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 ...OVER...ステートメント

ORDER BY 句