Merhabalar bu kez sql de az bilinen bir operatörü yani Pivot komutunu incelecegiz.
Pivot komutu Oracle ve Ms Sql gibi SQL tabanlı databaselerin hepsinde vardır.
Normalizasyon kurallarında içinde tasarlanmış tablolar olap şeklinde sorgulamalara izin vermeyebilir. Bu tür durumlar devreye pivot sorgulama girer ve detaylı analiz imakanı verir.
Pivot kısaca ne yapar ?? Tablo da yapısı geregi alt alta sıralanmış olan kayıları yanyana yani sütunlar şeklinde göstermeye yarar.
Sorgu yazmaya başlamadan önce bir konuda sizi uyarmak isterim. Database üzerine pivot sorgu uyğulayabilmek için bir tane prosedürü çalıştırmanız gerekiyor.
sp_dbcmptlevel 'veritabanı_Adı, '90'İsterseniz Prosedürü çalıştırmadan önce isterseniz sorguyu uygulayın nasıl tepki vereceğini, hangi hatayı döndüreceğini görün. Bu size ilerde konuyla ilgili hata çözümünde yardımcı olacaktır.
İsterseniz şimdi sorgumuzu yazalım.
SELECT *
FROM (
SELECT
YEAR(TARIH) [Yıl],
MONTH(TARIH) [Ay],
TOPLAM
FROM SATIS
) TableDate
PIVOT (
SUM (TOPLAM)
FOR [AY] IN (
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]
)
) PivotTable
Sorgumuzu yazdık şimdi kısaca açıklayalım.
Satır halinde olan satışları listeler. Satış tarihini ay ve yıl olarak ayırdık. Pivot kısmında da Toplam alanını topladık ve toplamları aylara bölerek gösterdik.
Konuyu biraz araştırırsanız bu işlemin tersini uygulayan UnPivot komutunuda kolayca kavrarsınız.
Artık istedigimiz zaman OLAP mantıgında sorgular çekebilir kullanıcılara daha okunur daha ayrıntılı raporlar sunabilirsiniz.
Umarım faydalı olmuştur.
4 yorum
güzel bir anlatim olmus. Paylastigin icin tesekkürler
Cevaplakeşke resimlerde olsa gerçi kendin hatırlamak için yazdın
CevaplaAslında kendime yazmaktan ziyade çok resimlik bir durum değil diye düşünmüş olmalıyım. Birazda tembellik olabilir tabi :)
Cevaplabaşkan sadece konuya ufak bir giriş yapmışsın, satırların tam anlamıyla ne işe yaradığını anlatmamışsın hiç bilmeyen birisi bu koda bakarken bir şey anlamaz. yine de emeğine sağlık.
CevaplaYorum Gönder