Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Görkem Sezgin
Görkem Sezgin
www.muhendisgorkem.blogspot.com
İletişme geçmek için tıklayın.
2 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: açık şema uygulamaları insert into OLAP Pivot select sql server 2008 t-sql Unpivot veritabanı with Kodlama Görkem Sezgin
 
YAZI HAKKINDA
Türü : Serbest Köşe (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : Kodlama
Yayınlanma Tarihi : 5.11.2009
Okunma Sayısı : 19819
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 23.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 23.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 23.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 23.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Pivot-Unpivot Operatörleri
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon

Veritabanı Yönetim Sistemi platformlarında (Sql Server, Oracle v.b.) yer alan herkesin pek bilmediği Pivot ve Unpivot Operatörleri bulunmaktadır. Şimdi gelin hep birlikte Pivot-Unpivot operatörlerini inceleyelim. Pivot ve Unpivot operatörleri daha çok OLAP biçimindeki sorgulamalarda ve açık şema uygulamalarında ihtiyaç duyulabilen operatörlerdir. Burada OLAP ve açık şema uygulamaları derken kastedilen şeyi kısaca açıklamak yerinde olur. OLAP, veriler üzerinde derinlemesine analiz yapılabilmesine olanak tanıyan bir teknolojidir.Açık şema uygulamaları ise hazırlanmış bir tablonun normalizasyon kuralları içinde yeterli çözümleri sağlayamadığı durumlarda farklı bir tablo üzerinde satırların sütunlara veya sütunların satırlara dönüştürülmesi gerekliliğidir. İşte bu tip durumlarda devreye Pivot ve Unpivot operatörleri girer. Pivot operatörü bir tablonun satırlarını yani belirli kayıtlarını sütunlara çevirir. Unpivot operatörü ise bir tablonun sütunlarını satırlara çevirmektedir. Biliyorum ki bu konuda örnekler yaparsak konu daha iyi anlaşılacaktır.

Öncelikle aşağıdaki şekilde görüldüğü gibi bir tablo oluşturalım.

Tablomuzu Sql kodları ile oluşturmak isteyenler için aşağıdaki kodları kullanabiliriz.

Create Table BilgisayarDetay(
BilgisayarKod int,
Nitelikler nvarchar(50),
Aciklama 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.

 

 

insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1000,'Bellek (GB)','3')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1000,'Sabit Disk (GB)','500')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1000,'Ekran (MB)','512')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1000,'Boyut (Inch)','19')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler)values (1000,'Web Cam')

insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1001,'Bellek (GB)','4')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1001,'Sabit Disk (GB)','800')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1001,'Ekran (MB)','1024')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1001,'Boyut (Inch)','21')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1001,'Web Cam','Var' )

insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1002,'Bellek (GB)','2')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1002,'Sabit Disk (GB)','1024')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1002,'Ekran (MB)','1024')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler,Aciklama)values (1002,'Boyut (Inch)','17')
insert into BilgisayarDetay(BilgisayarKod,Nitelikler)values (1002,'Web Cam'
)

Bu kayıtlarımızı ekledikten sonra tablodaki kayıtlarımızın içeriği aşağıdaki gibi gözüküyor olmalı.


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

WITH BilgisayarOzellik AS(
SELECT * FROM
BilgisayarDetay
)
SELECT Kayit.* FROM
BilgisayarOzellik
PIVOT(MAX(Aciklama)

FOR Nitelikler IN ([Bellek (GB)],[Sabit Disk (GB)],[Ekran (MB)],[Boyut (Inch)],[Web Cam]
)
)AS
Kayit

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.

Şimdi de Pivot operatörünün tersi işlemi yapan yani sütunları satırlara çeviren Unpivot operatörüne ait bir örnek yapalım. Bu işlem için aşağıdaki gibi bir tablo oluşturalım.


Yukarıda görüldüğü gibi Satis adında her bir satıcının yıllık satış miktarlarının tutulduğu bir tablo oluşturduk. Bu tabloya aşağıdaki gibi kayıtları ekleyelim.


Yukarıda bulunan şekildeki gibi bazı kayıtlarımızı tablomuza girdikten sonra Unpivot operatörümüzü kullanabiliriz.

SELECT satislar.* FROM Satis
UNPIVOT (SatışMiktari FOR Yıllar IN ([2007],[2008],[2009]
)
)AS satislar

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. Bu kod bloğu bize aşağıdaki gibi bir çıktı sunacaktır.


Gördüğümüz gibi yıllar isminde ayrı bir sütun oluşturulmuştur. Ümit ediyorum ki bu makale ile veritabanı, veri madenciliği, OLAP gibi kavramlar konusunda herkeste bir merak oluşacaktır ve bu konuda araştırmalar artacaktır.
Tekrar görüşmek dileğiyle.

 

 

Makale:
Pivot-Unpivot Operatörleri Kodlama Görkem Sezgin
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor