Son Haberler
Anasayfa / Yazılım / SQL / WHERE ve ORDER BY Deyimlerinin Birlikte Kullanımı

WHERE ve ORDER BY Deyimlerinin Birlikte Kullanımı

SQL’de ORDER BY deyimi ile birlikte SELECT ile listelediğimiz verilerin sıralanmasını sağlayabiliriz. SQL?de SELECT ile bir sorgu çektiğimizde gelen veriler tabloya girilen verilerin standart sırası ile önümüze gelebilmektedir. Diyelim ki şöyle bir durum oluştu, bir çalışanlar listesinde binlerce kayıt var bu kişilerin adını listeleyeceğim ama alfabetik olarak yapmak istiyorum. İşte bu noktada kullanacağımız deyim ORDER BY deyimidir.

Örnek : (AdventureWorks veritabanını kullanıyorum)

SELECT LastName,REVERSE(LastName)
FROM Person.Person
ORDER BY REVERSE(LastName);

Bu sorgumda Person.Person tablosundan LastName alanını ve LastName alanının ters çevrilerek listelenmesini sağladım.

300103

SELECT BirthDate
FROM HumanResources.Employee
ORDER BY YEAR(BirthDate);

HumanResources.Employee tablosundan BirthDate alanını listeliyorum ancak sıralamam BirthDate alanındaki verinin Yıl bilgisinin artan sıralamasında..

300104

Örneklerimize devam edelim.

Sales.SalesOrderHeader tablosundan SalesOrderID ve OrderDate alanlarını listeleyeceğim ancak şartım şu, OrderDate alanındaki yıl = 2008 olacak.

SELECT SalesOrderID, OrderDate 
FROM Sales.SalesOrderHeader 
WHERE YEAR(OrderDate) = 2008

Görüldüğü üzere burada sıralama değil aslında filtreleme yaptım dolayısı ile ORDER BY kullanmadım, sadece WHERE yeterli..

300105

Person.Person tablosundan PersonType, FirstName, MiddleName, LastName alanlarını listeleyeceğiz. Yalnız sıralama şu şekilde olacak eğer PersonType değeri IN,SP,SC ise bunları listelerken LastName alanına göre artan şekilde listeleyecek, eğer bu üçün haricinde ise FirstName alanına göre artan şekilde listeleyecek. Burda durumu kontrol edebilmek için CASE deyimini kullanacağız.

SELECT PersonType, FirstName, MiddleName, LastName 
FROM Person.Person ORDER BY CASE 
WHEN PersonType IN ('IN','SP','SC','EM')
THEN LASTNAME ELSE FirstName END;

300106

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir