SELECT IL_ADI
FROM ILLER_TABLOSU
ORDER BY CASE IL_ADI
WHEN 'İSTANBUL' THEN 1
WHEN 'ANKARA' THEN 2
WHEN 'İZMİR' THEN 3
ELSE 4
END
Sıralama da İstanbul, Ankara, İzmir ilk 3 sırada ve koda göre diğer iller de 4. sırada olacaktır. Fakat bu durumda diğer iller sıralanmadan gelişi güzel gelmektedir. Bu şekilde bir sıralama hiçbir işimize yaramaz sanırım. Bu sebeple koda ufak bir ekleme yapmak gerekiyor.
SELECT IL_ADI
FROM ILLER_TABLOSU
ORDER BY CASE IL_ADI
WHEN 'İSTANBUL' THEN 1
WHEN 'ANKARA' THEN 2
WHEN 'İZMİR' THEN 3
ELSE 4
END,
IL_ADI ASC
Bu şekilde geri kalan illerinde A'dan Z'ye sıralanmasını sağlayabiliriz.
ORDER BY üzerinde CASE'in diğer bir kullanım şekli ise sıralamaya baz alınacak kolonun seçeneğe bağlı hale getirilmesidir.
DECLARE @Secenek int
SET @Secenek = 3
SELECT Ad, Soyad, DogumYeri
FROM Kisiler
ORDER BY CASE
WHEN @Secenek = 1 THEN Ad
WHEN @Secenek = 2 THEN Soyad
WHEN @Secenek = 3 THEN DogumYeri
END
@Secenek değişkeninin 3 olması durumunda DogumYeri kolonu A'dan Z'ye sıralanacaktır.
Using ORDER BY CASE to make custom sort in SQL
Merhaba asp içinde bu şekilde kullanamıyorum. Hata veriyor. Yardımcı olabilir misiniz?
ReplyDeleteMerhaba,
ReplyDeleteBu sql de yazılmış bir kod. Bu sebeple aynı kodu, @secenek değerini parametre olarak alan bir function içine alıp, asp'den function a parametre göndererek çalıştırmanızı tavsiye ederim.
Merhaba hocam,
ReplyDeleteSeçenekli olan değil ilk yaptığınız örneği de çalıştıramadım. İlk yaptığınız örneği nasıl kullanabilirim.
SQL'i ASP içinde kullanış şeklinizi görebilirsem size daha iyi yardımcı olabilirim.
Delete