Tablomuzu Sql kodları ile oluşturmak isteyenler için aşağıdaki kodları kullanabiliriz.
1 |
Create Table BilgisayarDetay( |
3 |
Nitelikler nvarchar(50), |
Ardından oluşturduğumuz bu tabloya insert cümleciği vasıtasıyla kayıtlar ekleyelim. Ben aşağıdaki gibi eklemeler yaptım.
01 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1000, 'Bellek (GB)' , '3' ) |
02 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1000, 'Sabit Disk (GB)' , '500' ) |
03 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1000, 'Ekran (MB)' , '512' ) |
04 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1000, 'Boyut (Inch)' , '19' ) |
05 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler)values (1000, 'Web Cam' ) |
07 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1001, 'Bellek (GB)' , '4' ) |
08 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1001, 'Sabit Disk (GB)' , '800' ) |
09 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1001, 'Ekran (MB)' , '1024' ) |
10 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1001, 'Boyut (Inch)' , '21' ) |
11 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1001, 'Web Cam' , 'Var' ) |
13 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1002, 'Bellek (GB)' , '2' ) |
14 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1002, 'Sabit Disk (GB)' , '1024' ) |
15 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1002, 'Ekran (MB)' , '1024' ) |
16 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1002, 'Boyut (Inch)' , '17' ) |
17 |
insert into BilgisayarDetay(BilgisayarKod,Nitelikler)values (1002, 'Web Cam' ) |
Şimdi gelin Nitelikler kısmında yer alan satırları yani kayıtları Pivot operatörü ile sütunlara çevirelim. Bu işi gerçekleştirmek için aşağıdaki gibi bir Sql kod bloğu yazmamız gerekiyor.
1 |
WITH BilgisayarOzellik AS( |
2 |
SELECT * FROM BilgisayarDetay |
4 |
SELECT Kayit.* FROM BilgisayarOzellik |
6 |
FOR Nitelikler IN ([Bellek (GB)],[Sabit Disk (GB)],[Ekran (MB)],[Boyut (Inch)],[Web Cam]) |
Bu kod bloğunu şu şekilde açıklayabiliriz; öncelikle BilgisayarDetay isimli tablomuzun kayıtlarını pivot sorgusunun çalıştırılacağı BilgisayarOzellik adında sanal bir tabloya yani sonradan türettiğimiz bir tabloya aktardık. Ardından “SELECT Kayit.* FROM BilgisayarOzellik” satırı ile BilgisayarOzellik isimli sanal tablomuzun bütün sütünlarını seçmiş bulunuyoruz. Sonraki kod satırımızda MAX fonksiyonu aklınızı karıştırmış,neden böyle bir fonksiyon kullandık diyebilirsiniz. Pivot operatörümüzün çalışabilmesi için gruplama yapabilen bir fonsiyon gereklidir. Bu fonksiyon MAX, MIN veya SUM gibi gruplama yapabilen bir fonksiyon olabilir.
Biz burada Aciklama sütünuna göre MAX fonksiyonu ile bir gruplama yaptık.Son olarak “FOR Nitelikler IN ([Bellek (GB)],[Sabit Disk (GB)],[Ekran (MB)],[Boyut (Inch)],[Web Cam])” sql kod satırı ile Nitelikler sütunundaki kayıtları kullanarak satırları sütunlara çevirmek istediğimizi belirttik. Satırları sütunlara çevrilecek kısımlar köşeli parantez içinde yazılmıştır. Şimdi yazdığımız bu kod bloğunu çalıştırdığımızda ekrana gelecek sonucu görelim.
Yukarıdaki şekilden de gördüğümüz gibi Nitelikler içinde yer alan satırlar sütunlara dönüşmüş durumda ve Aciklama sütunundaki veriler bu yeni sütunlar içindeki kayıtlar olarak yerini almıştır.
Yukarıda bulunan şekildeki gibi bazı kayıtlarımızı tablomuza girdikten sonra Unpivot operatörümüzü kullanabiliriz.
1 |
SELECT satislar.* FROM Satis |
2 |
UNPIVOT (SatışMiktari FOR Yıllar IN ([2007],[2008],[2009]) |
Bu kod bloğunda Satis tablosunun bütün sütunları,kayıtları satislar isimli sanal bir tabloya aktarılmıştır. 2007,2008,2009 isimli sütunlar satırlara dönüştürülmek üzere Unpivot operatörü kullanılmıştır.