Sem Göksu
Sem Göksu
Yazılım · Yolculuk · Fenerbahçe
SQL Server

T-SQL İçerisinde Dinamik ORDER BY kullanımı

26 Eylül 2010 1 dk okuma 3552 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
Paylaş:

Yorumlar (5)

K
Kadir AÇIKGÖZ 27 Eyl 2010 20:33

güzel olmuş hocam. elinize sağlık.

E
Erman Demirer 08 Eki 2010 00:18

Yapma Sem, nasıl bir kontrolde gösteriyorsunki datalarını otomatik order yapamıyor !

S
Sem Göksu 08 Eki 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 Eki 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 Eki 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.

Yorum bırak

* Yorumlar moderasyon sonrası yayınlanır. E-posta gizli tutulur.