SQL Pivot Kullanımı

SQL Pivot Kullanımı

24 Ekim 2018 0 Yazar: Mustafa BÜKÜLMEZ
Toplam Görüntülenme : 73
Yaklaşık okuma süresi : 3 DK
SQL Mükerrer Kayıtlar Bulmak ve Silmek
IDENTITY_INSERT is set to ON/OFF Kullanımı ve Hata Çözümü
SQL Pivot Kullanımı
5 (100%) 2 Oy

SQL Pivot Kullanımı , yazım ile sql eğitim setime bir yazı daha ekliyorum. Yakın zamanda uğraştığım bir projedeki rapor için pivot kullanmam gerekiyordu. Pivot özelliği ile sql satırları kolon yapabiliyoruz.. Daha fazla uzatmadan gelin görelim.

 

SQL Pivot Kullanımı

Evet, ne demiştik… Satırları kolon olarak almaktan bahsetmiştik. Şimdi bunu nasıl yapacağımızı göreceğiz. SQL satırları kolon yapma işlemini görelim.

Öncelikle senaryomuzu verelim. Yapmak istediğim işlem şudur;

Bir kaç şehirde bir yada daha fazla mağazamız var diyelim. Bu şehirlerden aylık olarak olarak gelen tutarları gösterecek bir rapor yapmak istiyoruz diyelim. Bizde gelen miktarları mağaza mağaza ve satır satır yazdık. Bir içinde birden fazla kez tahsilat yapılmış da olabilir. Bu durumda şehir, mağaza ve tutar bilgilerinin hepsi satır satır olacaktır. Bu satırlardaki Ay bilgilerini kolon olarak yazmak ve tutarları da ay bazında toplamak istiyoruz. Şehirler ve şehirlerden gelen tutarlar satırda, aylar kolonda olacak. Bu şekilde şehir ve ay bazlı tahsilat raporu elde etmiş olacağız.

Şimdi öncelikle sorgumuzu yazıyoruz.

SELECT 
	 tah_ay as AY
	,tah_sehir as ŞEHİR
	,SUM(tah_tahsilat) as TOPLAM
FROM Tablomuz
Where tah_yil = 2018
GROUP BY tah_sehir,tah_ay
order by AY

Şimdi elimizde sorgumuz var. Bu sorgumuzdan gelen sonuç aşağıdaki gibi olacak.

Ocak, Kahramanmaraş, 125896,23

Şubat, Kahramanmaraş, 523896,23

Şubat, İstanbul, 256978,69

Mart, Mersin, 123123123,36

Buradaki ay bilgisini kolon olarak alacağız ve bunu yaparken tutarları toplayacağız.

Şimdi sorgumuzu bir alt sorgu (subquery ) yapıyoruz.

SELECT 
*
 FROM  (
SELECT 
	 tah_ay as AY
	,tah_sehir as ŞEHİR
	,SUM(tah_tahsilat) as TOPLAM
FROM Tablomuz
Where tah_yil = 2018
GROUP BY tah_sehir,tah_ay
order by AY ) K

Gördüğünüz gibi sorgumuz bir alt sorgu haline geldi. Sorgumuzu alt sorgu haline getirmeden pivot uygulamasını yapamıyoruz. Bu sebeple gerekli bir işlemdir. Şimdi asıl işe geliyoruz. SQL Pivot kullanımını gösterelim.

İlgili İçerik  SQL Server Deadlock Nedir? Yanlış Bilinenler

Pivot Kullanımı

PIVOT(SUM(TOPLAM) FOR AY IN ([Ocak],[Şubat],[Mart],[Nisan],[Mayıs],[Haziran],[Temmuz],[Ağustos],[Eylül],[Ekim],[Kasım],[Aralık])) AS PVT

Şimdi, sql Pivot kullanımı için, pivot yazdıktan sonra parantez açıyoruz ve kolon olmasını istediğimiz verinin altında duracak bilgileri işlememiz gerekiyor. Mesela, Ocak ayındaki TOPLAM değerini, Ocak kolonunun altında görmek istiyoruz. Kolon başlıkları olacak bilgileri köşeli parantezler arasında yazıyoruz. Ancak kolon başlığı olacak veriler, For kısmından sonra verdiğimiz asıl kolonun içinde olan veriler olmalıdır. Bu örnekte Ay kolonu verdik, Dikkat ettiyseniz ayların adlarını yazdım çünkü Ay kolonundaki ay bilgisi ay adları olarak yer alıyor. Eğer ay numaraları olsaydı köşeli parantezler arasına ay numaralarını yazmamız gerekirdi.

Şimdi tüm sorguyu verelim.

SELECT 
*
 FROM  (
SELECT 
	 tah_ay as AY
	,tah_sehir as ŞEHİR
	,SUM(tah_tahsilat) as TOPLAM
FROM Tablomuz
Where tah_yil = 2018
GROUP BY tah_sehir,tah_ay
order by AY ) K 
PIVOT(SUM(TOPLAM) FOR AY IN ([Ocak],[Şubat],[Mart],[Nisan],[Mayıs],[Haziran],[Temmuz],[Ağustos],[Eylül],[Ekim],[Kasım],[Aralık])) AS PVT

Sorgumuz da bu şekilde görünüyor. Sorgumuzu çalıştırdığımızda ise elde edeceğimiz sonuç şuna benzer olacaktır.

Şehir,                         Ocak,           Şubat,           Mart, …

Kahramanmaraş,   13245,23,     45789,21,    15478,12, …

Gördüğünüz sql pivot kullanımı da bu şekildedir.


Bu dersimizinde sonuna geldik dostlar, Diğer derslerimizde görüşmek üzere…

Microsoft SQL Server & T-SQL Eğitim Seti ders listesi için tıklayınız.

Sağlıcakla ve Takipte Kalın. 😉

SQL Mükerrer Kayıtlar Bulmak ve Silmek
IDENTITY_INSERT is set to ON/OFF Kullanımı ve Hata Çözümü
Mustafa Bükülmez

Liseden, Ağ Sistemleri ve Yönetimi bölümünden mezun oldum. Üniversiteden (2 yıllık), Bilgisayar Programcılığı bölümünden mezun oldum. Şuanda da AÖF, Yönetim Bilişim Sistemleri bölümünde okumaktayım.

Uzmanlık alanlarım; Windows Sistemleri, HTML, CSS, C# ve SQL’dir.

Hobi olarak uğraştığım genel konular, Photoshop, After Affects, Corel Draw’dır.Film, YABANCI dizi, Anime izlemeyi ve Manga okumayı severim. Arkadaşlarımla yürüyüş yapmayı ve grup olarak aktivitelere gitmeyi severim. Geri kalan zamanlarımın tümü bilgisayar karşısında geçer.

İlgili İçerik  SQL Order By Komutu - Verileri Sıralama