Klausa ORDER IN GROUP
Klausa ORDER IN GROUP digunakan bersama dengan pernyataan GROUP ON , yang mengembalikan tataan hasil dalam grup. Klausa ORDER IN GROUP memungkinkan Anda mengurutkan setiap grup yang dikembalikan dengan cara yang berbeda. Jika Anda mengelompokkan di System.Kind, misalnya, Anda kemudian dapat mengurutkan semua dokumen menurut System.Document.LastAuthor, semua file musik menurut System.Music.AlbumArtist, dan semua email berdasarkan System.Message.FromName.
Sintaks
Berikut ini adalah sintaks dari klausa 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>]] ])
Penentu nama grup adalah rentang atau nilai yang diketahui dari kolom grup, seperti yang ditentukan dalam pernyataan GROUP ON. Misalnya, nilai yang diketahui untuk System.Photo.ISOSpeed akan mencakup 'ISO-100', 'ISO-200', dan sebagainya. Rentang untuk System.Photo.DateTaken akan mencakup '2006-1-1' dan '2007-1-1' untuk pernyataan seperti GROUP ON System.ItemDate ['2006-1-1', '2007-1-1'].
Penentu kolom harus berupa kolom valid yang ditentukan dalam pernyataan GROUP ON atau SELECT. Anda dapat menyertakan lebih dari satu kolom, dipisahkan dengan koma. Misalnya, jika Anda mengelompokkan di System.Photo.ISOSpeed, Anda dapat mengurutkan semua foto ISO-100, pertama-tama oleh System.Photo.ShutterSpeed, lalu dengan System.Photo.Aperture.
Penentu arah opsional dapat berupa ASC untuk naik (rendah ke tinggi) atau DESC untuk turun (tinggi ke rendah). Jika Anda tidak menyediakan penentu arah, default, naik, akan digunakan. Jika Anda menentukan lebih dari satu kolom, tetapi tidak menentukan semua arah, arah yang Anda tentukan terakhir diterapkan ke setiap kolom berturut-turut hingga Anda secara eksplisit mengubah arah.
Rentang atau nilai yang tidak ditentukan secara eksplisit dalam klausa ORDER GROUP IN diurutkan dalam urutan naik berdasarkan nilai di kolom GROUP ON.
Contoh
Contoh berikut mengelompokkan hasil berdasarkan properti System.Kind. Kueri akan mengurutkan grup 'program' berdasarkan nama aplikasi dan grup 'musik' menurut judul album dan nomor trek. Grup NULL akan diurutkan berdasarkan nama item. Semua grup lain akan diurutkan berdasarkan tanggal item.
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)
Contoh berikut mengelompokkan hasil menurut properti System.ItemDate, lalu mengurutkan setiap grup menurut URL item, jenis, atau nama.
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)
Hasil kueri sebelumnya akan dikembalikan dalam lima grup dan diurutkan seperti yang dijelaskan dalam tabel berikut ini.
Grup | Deskripsi | Diurutkan berdasar |
---|---|---|
MINVALUE | Item dengan tanggal sebelum 2006-1-1 | Diurutkan menurut URL item, dalam urutan naik |
2006-1-1 | Item dengan tanggal pada atau setelah 2006-1-1 tetapi sebelum 2007-1-1 | Diurutkan menurut tanggal item, dalam urutan naik |
2007-1-1 | Item dengan tanggal pada atau setelah 2007-1-1 tetapi sebelum 2008-1-1 | Diurutkan menurut nilai jenis, dalam urutan naik |
2008-1-1 | Item dengan tanggal pada atau setelah 2008-1-1 | Diurutkan menurut tanggal item, dalam urutan naik |
NULL | Item tanpa nilai di kolom System.ItemDate | Diurutkan menurut nama item, dalam urutan naik |
Topik terkait