SQL Server’da Dinamik CASE WHEN İşlemi Nasıl Yapılır?

SQL Server'da Dinamik CASE WHEN İşlemi Nasıl Yapılır?
SQL Server'da Dinamik CASE WHEN İşlemi Nasıl Yapılır?

Herkese merhaba. Bu yazıda SQL Server’da Dinamik CASE WHEN işleminin nasıl yapılacağı ile ilgili bilgi vereceğim.

SQL Server’da bazı durumlarda Dinamik olarak CASE WHEN ifadesi kullanmanız gerekebilir.

Aşağıdaki örnek yapıyı kendinize göre revize ederek sizler de bu işlemi rahatlıkla yapabilirsiniz.

--Ogrenci Tablosu Oluşturma

CREATE TABLE OgrenciNotlari (
	OgrenciID INT PRIMARY KEY IDENTITY (1, 1)
   ,OgrenciAdi NVARCHAR(50)
   ,DersAdi NVARCHAR(50)
   ,DersNotu INT
)

--Ogrenci Tablosuna Veri Ekleme

INSERT INTO OgrenciNotlari (OgrenciAdi, DersAdi, DersNotu)
	VALUES (N'Ahmet', N'Matematik', 85)
	, (N'Ahmet', N'Fizik', 75)
	, (N'Ahmet', N'Matematik', 35)
	, (N'Ayşe', N'Matematik', 45)
	, (N'Ayşe', N'Fizik', 55)
	, (N'Ayşe', N'Matematik', 65)

DECLARE @ders NVARCHAR(50) = 'Matematik'
DECLARE @dinamikSQL NVARCHAR(MAX);
SET @dinamikSQL = ' 
SELECT OgrenciAdi,AVG(CASE WHEN DersAdi=''' + @ders + ''' THEN DersNotu END  ) AS ORTALAMA_NOT FROM  OgrenciNotlari GROUP BY OgrenciAdi'

EXEC sys.sp_executesql @dinamikSQL

Yukarıdaki sorguyu çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.

SQL Server'da Dinamik CASE WHEN İşlemi Nasıl Yapılır?

Bu örnek, @ders değişkenine bağlı olarak sorgunun bir kısmını değiştirir. @ders değişkeni, hangi dersin not ortalamalarını hesaplamak istediğimizi belirler. Daha sonra, @sql değişkeni, sorgunun tamamını içeren bir dize oluşturulur. Son olarak, sp_executesql prosedürü, dinamik sorguyu çalıştırmak için kullanılır.

Bu örnekte, CASE WHEN ifadesi AVG fonksiyonunun içinde kullanılır. Ancak, dinamik SQL sorgusu oluştururken CASE WHEN ifadesinin herhangi bir yeri için kullanılabilirsiniz.

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

257 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!