SQL'de ve farklı yönlerde birden çok sütuna göre sıralamaya çalışıyorum. column1
azalan ve column2
artan olarak sıralanır .
Bunu nasıl yapabilirim?
SQL'de ve farklı yönlerde birden çok sütuna göre sıralamaya çalışıyorum. column1
azalan ve column2
artan olarak sıralanır .
Bunu nasıl yapabilirim?
Yanıtlar:
ORDER BY column1 DESC, column2
Bu, her şeyi önce column1
(azalan) ve sonra iki veya daha fazla satır için alanlar eşit column2
olduğunda (varsayılan olan artan) column1
sıralar.
column1
önce ve sonra iki sıra column2
için column1
alanlar eşit olduğunda sıralar.
column2
sıralama ölçütü ve daha sonra STABLE sıralama ölçütü gerçekleştirir column1
. Bu, kararlı sınıflandırmanın ne olduğunu bilen insanlar için daha açıktır.
Diğer cevapların somut bir örneği yoktur, işte burada:
Aşağıdaki Kişiler tablosunda:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
Aşağıdaki sorguyu yürütürseniz:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
Sonuç kümesi şu şekilde görünecektir:
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
Bunu aşmamızın bir yolu var mı?
FirstName, LastName
girişler olsaydı farklılık gösterirYearOfBirth
Birden çok sütun sırası, her iki sütunun karşılık gelen değerlerine bağlıdır: Burada, Alfabe ve Sayılar ile adlandırılan iki sütunun olduğu ve bu iki sütundaki değerlerin artan ve azalan düzenler olduğu tablo örneğim .
Şimdi aşağıdaki komutu yürüterek bu iki sütunda Order By gerçekleştiriyorum :
Şimdi bu iki sütuna yeni değerler ekliyorum, burada ASC sırasında Alfabe değeri :
ve Örnek tablosundaki sütunlar şöyle görünür. Şimdi aynı işlemi tekrarlayın:
İlk sütundaki değerlerin sırasıyla, ikinci sütunun ASC düzeninde olmadığını görebilirsiniz.
(g, 10),(g,12)
. Ardından, sipariş sorgunuzu çalıştırın, sipariş olarak ikinci sütun alırsınız ASC
(yanig-10,g-11,g-12)
Birden fazla koşulda birden çok sipariş kullanabilirsiniz,
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