Bagikan melalui


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

 

Referensi

GROUP ON ... ATAS... Pernyataan

Klausul ORDER BY