SQL Server’da Dinamik ORDER BY Kullanmak

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;

SQL Server'da Dinamik ORDER BY Kullanmak

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:

SQL Server'da Dinamik ORDER BY Kullanmak

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

137 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!