SQL'de ve farklı yönlerde birden çok sütuna göre sıralamaya çalışıyorum. column1azalan ve column2artan olarak sıralanır .
Bunu nasıl yapabilirim?
SQL'de ve farklı yönlerde birden çok sütuna göre sıralamaya çalışıyorum. column1azalan ve column2artan 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 column2olduğunda (varsayılan olan artan) column1sıralar.
column1önce ve sonra iki sıra column2için column1alanlar eşit olduğunda sıralar.
column2sı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, LastNamegiriş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