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.
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.