Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

SQL 2005 de PIVOT kullanımı

Bu yazıda internetteki araştırmalarım sonucunda hoşuma giden veritabanı ve programcılık konusundaki pratikleri paylaşacağım. Bu yazıyı her yeni pratik bulduğumda güncellemeyi düşünüyorum.

1 – SQL Server 2005 ve üzerinde PIVOT-UNPIVOT keywordları ile bir tablodaki sütunları satırlara satırları sütunlara çevirmeniz mümkün.Sql 2000’de bunu yapmak için çok efor sarfetmek gerekiyordu.Performans açısından fazla bir fark olmamasına rağmen kullanım olarak bizlere kolaylık sağladığı kesin.

İki tane tablomuz olsun.Bir tanesi stok kartlarımızı listesin diğeri de bu kart üzerinde yapılan işlemleri listelesin.

CREATE TABLE Stok(
stokkod int,
stokad
)
CREATE TABLE Hareket(
hareketno int,
stokkod int,
fistipi NVARCHAR(30),
deger SQL_VARIANT
)

Şimdi şöyle bir şeye ihtiyacımız olduğunu düşünelim. Her bir fiştipini sütunlarda göstererek şöyle bir tablo elde etmeliyiz
StokAdı -AlımFaturası – SatışFaturası
1                –  200                –  300
2               –  200                – 400

Eski teknikle şöyle bir sorgu yapardık muhtemelen
SELECT
(SELECT SUM(deger) FROM Hareket WHERE fistipi=’Alım Faturası’ AND stokkod=S.Stokkod) As AlimFaturasi,
(SELECT SUM(deger) FROM Hareket WHERE fistipi=’Satış Faturası’ AND stokkod=S.Stokkod) As SatisFaturasi
FROM Stok S

YENİ YÖNTEMLE

SELECT S.*
FROM Hareket
PIVOT
(
SUM( deger )
FOR ozellik IN( [Alım Faturası] , [Satış Faturası] )
) AS S
WHERE StokKod>0

Sorgunun çalışıp çalışmadığını sql server 2005 kurulu olmadığı için deneme fırsatım olmadı ancak burada önemli olan mantığı kavramak ve müşterilere daha anlamlı ve güzel raporlar sunabilmek.

Herkese iyi çalışmalar

Reklamlar

Mart 20, 2009 - Posted by | MSSql | , ,

Henüz yorum yapılmamış.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s