Saya mencoba mengurutkan berdasarkan beberapa kolom dalam SQL, dan dalam arah yang berbeda. column1
akan diurutkan menurun, dan column2
naik.
Bagaimana saya bisa melakukan ini?
Saya mencoba mengurutkan berdasarkan beberapa kolom dalam SQL, dan dalam arah yang berbeda. column1
akan diurutkan menurun, dan column2
naik.
Bagaimana saya bisa melakukan ini?
Jawaban:
ORDER BY column1 DESC, column2
Ini mengurutkan semuanya dengan column1
(turun) pertama, dan kemudian dengan column2
(naik, yang merupakan default) setiap kali column1
bidang untuk dua atau lebih baris sama.
column1
pertama dan kemudian column2
setiap kali column1
bidang untuk dua baris sama.
column2
dan kemudian melakukan penyortiran STABLE oleh column1
. Ini lebih jelas bagi orang yang tahu apa itu sortir stabil.
Jawaban lainnya tidak memiliki contoh konkret, jadi begini:
Diberikan tabel People berikut :
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
Jika Anda menjalankan kueri di bawah ini:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
Set hasil akan terlihat seperti ini:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | More | 1478
Thomas | Jefferson | 1826
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
1.Firstname asc, Lastname desc, yearOfBirst asc and 2.Firstname asc, Lastname desc, yearOfBirst desc
Apakah ada cara untuk mengatasinya?
FirstName, LastName
entri duplikat dengan berbedaYearOfBirth
Beberapa memesan kolom tergantung pada nilai-nilai yang sesuai baik kolom: Berikut ini adalah contoh meja saya di mana dua kolom nama dengan abjad dan Nomor dan nilai-nilai dalam dua kolom ini asc dan desc perintah.
Sekarang saya melakukan Order Dengan di dua kolom ini dengan mengeksekusi perintah di bawah ini:
Sekarang lagi saya memasukkan nilai baru dalam dua kolom ini, di mana nilai Alphabet dalam urutan ASC :
dan kolom pada tabel Contoh terlihat seperti ini. Sekarang lagi lakukan operasi yang sama:
Anda bisa melihat nilai-nilai di kolom pertama dalam urutan desc tetapi kolom kedua tidak dalam urutan ASC.
(g, 10),(g,12)
. Kemudian, jalankan permintaan pesanan-menurut Anda, Anda mendapatkan kolom kedua sebagai ASC
pesanan (itu artinyag-10,g-11,g-12)
Anda dapat menggunakan beberapa pemesanan pada beberapa kondisi,
ORDER BY
(CASE
WHEN @AlphabetBy = 2 THEN [Drug Name]
END) ASC,
CASE
WHEN @TopBy = 1 THEN [Rx Count]
WHEN @TopBy = 2 THEN [Cost]
WHEN @TopBy = 3 THEN [Revenue]
END DESC