SQL Server’da Dinamik ORDER BY Kullanmak
![](https://sqlserveregitimleri.com/wp-content/uploads/2023/04/sql-serverda-dinamik-order-by-kullanmak.jpg)
Herkese merhaba,
Bu yazıda SQL Server’da Dinamik ORDER BY kullanmak ile ilgili bilgi vermeye çalışacağım.
SQL Server’da, ORDER BY ifadesi kullanarak sorgu sonuçlarını belirli bir sütuna göre sıralayabilirsiniz. Ancak, bazen sıralama yapmak istediğiniz sütunun adı sabit değildir veya birden fazla sütuna göre dinamik olarak sıralama yapmak istersiniz.
Bu durumda, SQL Server’da dinamik ORDER BY ifadesi kullanabilirsiniz. Bu, sıralama kriterlerinin sorgu çalıştırıldığında dinamik olarak belirlendiği anlamına gelir. Dinamik ORDER BY ifadesi kullanırken, sıralama kriterlerinin bir değişkene veya parametreye atanması gerekir.
Aşağıda, örnek bir sorguda dinamik ORDER BY ifadesi kullanımını gösteren örnek bir kod bloğu yer almaktadır.
İlk olarak tablolarımızı oluşturup verileri ekleyelim.
--Tablomuzu oluşturalım
CREATE TABLE Customers (
ID INT IDENTITY (1, 1) PRIMARY KEY
,FirstName VARCHAR(50)
,LastName VARCHAR(50)
,City VARCHAR(50)
,Country VARCHAR(50)
);
--Verileri ekleyelim
INSERT INTO Customers (FirstName, LastName, City, Country)
VALUES ('John', 'Doe', 'New York', 'USA'),
('Jane', 'Doe', 'Los Angeles', 'USA'),
('Bob', 'Smith', 'London', 'UK'),
('Alice', 'Jones', 'Paris', 'France');
Yukarıdaki kod bloğu, “Customers” adında bir tablo oluşturur ve bu tabloya dört adet müşteri bilgisi ekler.
Şimdi, bu tabloyu kullanarak bir dinamik ORDER BY sorgusu yazalım. Sıralama kriterini “City” veya “Country” olarak belirleyeceğiz.
DECLARE @SortColumn VARCHAR(50) = 'City';
SELECT
*
FROM Customers
ORDER BY CASE
WHEN @SortColumn = 'City' THEN City
WHEN @SortColumn = 'Country' THEN Country
ELSE FirstName
END;
Yukarıdaki sorgu, “City” veya “Country” sütununa göre dinamik olarak sıralama yapar. Sıralama kriteri, “@SortColumn” değişkeninde belirlenir ve CASE bloğu kullanılarak belirli sütunlara göre sıralama yapılır. Eğer “@SortColumn” değişkeninde belirtilen sütun yoksa, varsayılan olarak “FirstName” sütununa göre sıralama yapılır.
DECLARE @SortColumn VARCHAR(50) = 'Country';
SELECT
*
FROM Customers
ORDER BY CASE
WHEN @SortColumn = 'City' THEN City
WHEN @SortColumn = 'Country' THEN Country
ELSE FirstName
END;
“@SortColumn” değişkenine ‘Country’ değeri atanırsa, sorgu sonucu şu şekilde olacaktır:
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.