ORDER IN GROUP 子句
ORDER IN GROUP 子句會與 GROUP ON 語句搭配使用,以群組傳回結果集。 ORDER IN GROUP 子句可讓您以不同的方式排序每個傳回的群組。 例如,如果您在 System.Kind 上分組,則可以依 System.Document.LastAuthor 排序所有檔、System.Music.AlbumArtist 的所有音樂檔案,以及 System.Message.FromName 的所有電子郵件。
Syntax
以下是 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 的範圍會包含 '2006-1-1' 和 '2007-1-1' 等語句,例如 GROUP ON System.ItemDate ['2006-1-1'、'2007-1-1']。
資料行規范必須是 GROUP ON 或 SELECT 語句中指定的有效資料行。 您可以包含多個資料行,並以逗號分隔。 例如,如果您在 System.Photo.ISOSpeed 上分組,您可以先依 System.Photo.ShutterSpeed 排序所有 ISO-100 相片,然後再依 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)
上述查詢的結果會以五個群組傳回,並依照下表所述排序。
群組 | 描述 | 排序依據 |
---|---|---|
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 資料行中沒有值的專案 | 依專案名稱排序,以遞增順序排序 |
相關主題