SQL Server’da UnPivot Table Kullanımı
Merhaba,
Önceki yazılarımdan SQL Server’da Pivot Table Kullanımı başlıklı içeriğimde SQL Server’da veriler üzerinden anlam ve okunabilirlik açısından güçlü rapor sunabilmemizi sağlayan Pivot Table’ın nasıl kullanıldığını incelemiştik. Bu içeriğimizde ise Pivot neticesinde sonuç dönen sorgularımızın kolonlarını ve o kolonlara karşılık gelen sütünları dikey olarak birleştirmeyi ve sonucu iki kolona indirgeyerek normal tablo formatında düzenlemeyi sağlayan UnPivot Table’ın kullanımını inceleyeceğiz.
Bir sorguyu UnPivot Table ile normal tabloya getirebilmek için aşağıdaki prototipte olduğu gibi çalışma gerçekleştirilecektir.
SELECT * FROM ( SELECT Kolon1, Kolon2, Kolon3, Kolon4 FROM Table1 -- Pivot Table ) Pivot_Table UNPIVOT ( X FOR Y IN(Kolon1, Kolon2, Kolon3, Kolon4) ) UNPivot_table
Yukarıdaki kod bloğuna dikkat edilirse eğer subquery olan ve netice olarak pivot table dönen sorgudaki her bir kolon UnPivot fonksiyonu içerisinde IN fonksiyonu tarafından değer olarak belirtilmiştir. İşte bu değerlerin bulunduğu kolon adı “Y” olarak isimlendirilmiştir. Tüm bunlara karşılık gelecek olan denk satırlardaki değerler ise “X” kolonu altında dikey bir şekilde ilgili kolonların karşılarına yerleştirilecektir.
Anlayacağınız; Pivot türevse, UnPivot o türevin integralidir.
Şimdi North-wind veritabanı üzerinde aşağıdaki gibi elde edilmiş bir Pivot table’ı ele alarak örneklendirme yapalım.
Yukarıdaki görseli incelerseniz eğer mavi ile çizilmiş kolonlardaki verileri dikey eksende sıralatacağız ve yanlarına kırmızı ile çizilmiş satırdaki değerleri hizalı bir şekilde yerleştireceğiz.
Gördüğünüz gibi bir önceki vermiş olduğum sorguyu burada subquery şeklinde değerlendirerek UnPivot fonksiyonunu üzerinde uygulamış olduk.
Eğer ki bu tarz bir yapılanmada daha okunabilir bir çalışma gerçekleştirmek istiyorsanız aşağıdaki gibi “WITH AS” kalıbıylada çalışabilirsiniz.
İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…