SQL Server
T-SQL İçerisinde Dinamik ORDER BY kullanımı
26 September 2010
1 dk okuma
3629
5
Stored Procedure içerisinde dinamik sıralama yapmak için CASE ifadesini kullanabiliyoruz. Parametreden gelen değeri CASE ifadesi ile kontrol ederek istediğimiz alan adına göre sıralama yapabiliyoruz. İtiraf etmeliyim ki şimdiye kadar bir çok yöntem denemiştim ve hiçbirinden memnun kalmamıştım :) Umarım bu yöntem sizlerinde işine yarar...

Declare @SiralamaTipi int =1 -- Buraya yazdığımız değere göre sorgu sonucu farklı şekilde sıralanacak.
Select * From Stok.Kategoriler Order By
Case When @SiralamaTipi =1 then KategoriID End Asc, -- KaregoriID'ye göre artan sıralama
Case When @SiralamaTipi = -1 then KategoriID End Desc, -- KaregoriID'ye göre azalan sıralama
Case When @SiralamaTipi =2 then KategoriAdi End Asc, -- KaregoriAdi'na göre artan sıralama
Case When @SiralamaTipi = -2 then KategoriAdi End Desc -- KaregoriAdi'na göre azalan sıralama

Declare @SiralamaTipi int =1 -- Buraya yazdığımız değere göre sorgu sonucu farklı şekilde sıralanacak.
Select * From Stok.Kategoriler Order By
Case When @SiralamaTipi =1 then KategoriID End Asc, -- KaregoriID'ye göre artan sıralama
Case When @SiralamaTipi = -1 then KategoriID End Desc, -- KaregoriID'ye göre azalan sıralama
Case When @SiralamaTipi =2 then KategoriAdi End Asc, -- KaregoriAdi'na göre artan sıralama
Case When @SiralamaTipi = -2 then KategoriAdi End Desc -- KaregoriAdi'na göre azalan sıralama
Yorumlar (5)
K
Kadir AÇIKGÖZ
27 Sep 2010 20:33
güzel olmuş hocam. elinize sağlık.
E
Erman Demirer
08 Oct 2010 00:18
Yapma Sem, nasıl bir kontrolde gösteriyorsunki datalarını otomatik order yapamıyor !
S
Sem Göksu
08 Oct 2010 00:24
@Erman => Hazır hiç bir kontrol kullanmıyorum. Listview, SQL Paging ve klasik ADO.NET ile bu söylediğimi yapan daha güzel birşey varsa söyle onu kullanayım.
K
Kerem Özsu
27 Oct 2010 01:36
Eline sağlık güzel ve yararlı bir içerik olmuş ama bu içerik için Erman'a katılıyorum.
S
Sem Göksu
27 Oct 2010 01:48
@Kerem => Eğer datayı SQL Paging kullanarak paket paket çekersem, listeyi sort edebilmek için bu şekilde bir yöntem kullanıyorum. Amacım sadece ekrandaki listeyi değil tüm resultset'i sıralamak. Gridview ile tüm kayıtları gösterip yada sayfalayarak gösterip viewstate üzerinden gidebilirim ama o zaman da performans açısından ne kadar iyi sonuç alırız tartışılır.