SQL VE TSQL DERS 20: PIVOT KULLANIMI

Özellikle raporlama kısmında çok fazla kullanılan pivot tablolar verilerin en özet halini sunmaktadır.

Pivotlar kısaca satırları sütuna çevirirler.

create table siparis
(
siparisId int IDENTITY(1,1) PRIMARY KEY,
musteriAdSoyad nvarchar(30),
urunAd nvarchar(50),
tutar int,
donem date
)

-- pivot için önce yukarıdaki tabloyu oluşturalım


insert into siparis values ('Sabri KUNT','Apple IPAD','500','01.06.2010')
insert into siparis values ('Ali DEMIR','LG Netbook	','600','01.06.2010')
insert into siparis values ('Metin TOSUN','PacketBell Notbook','300','01.07.2010')
insert into siparis values ('Sabri KUNT	','Apple IPAD','500','01.08.2010')
insert into siparis values ('Sabri KUNT	','Nikon D5000	','1200','01.06.2010')
insert into siparis values ('Metin TOSUN','Microsoft Mouse','50','01.06.2010')
insert into siparis values ('Metin TOSUN','HP Printer	','800','01.07.2010')
insert into siparis values ('Ali DEMİR','HP Server	','1300','01.08.2010')
insert into siparis values ('Ali DEMİR	','HP Pavilion	','100','01.08.2010')

-- sonra tablonun içine yukarıdaki verileri ekleyelim


select musteriAdSoyad,donem,SUM(tutar) as 'Toplam Tutar' from siparis
group by musteriAdSoyad,donem 

/*
 bu kodla musterileri hangi dönemde ne kadar tutar harcadıklarını alt alta
 listeleyebiliriz. ama büyük veritabanlarında yüzlerce verimiz olduğunu
 düşünürsek işimize yarayan datayı görmek bizim için çok daha zor olur.
 böyle durumlarda sütunlaştırarak analizimizi daha kolay yapabiliriz.
*/


SELECT *
FROM ( Select musteriAdSoyad,donem,SUM(tutar) as 'ToplamTutar' from siparis
group by musteriAdSoyad,donem ) as normaltablo

-- bu koda şimdi pivot satırımızı ekleyelim

PIVOT ( SUM(ToplamTutar) for donem IN ([01.06.2010],[01.07.2010],[01.08.2010]) )
as pivottablo

/*
 IN, or gibi bir anlamı var burda 01 haziran yada 1 temmuz yada 1 ağustos
 varsa listele gibi bir anlama geliyor.
 İsim isim listelediğinden artık istediğimiz dataya daha kolay ulaşabiliriz.
*/

 

Adsız9