﻿
{"id":7681,"date":"2018-04-21T08:25:43","date_gmt":"2018-04-21T08:25:43","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=7681"},"modified":"2018-04-21T08:26:49","modified_gmt":"2018-04-21T08:26:49","slug":"sql-serverda-pivot-table-kullanimi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/sql-serverda-pivot-table-kullanimi\/","title":{"rendered":"SQL Server&#8217;da Pivot Table Kullan\u0131m\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde; SQL&#8217;de sorgu sonucu elde etti\u011fimiz tablo verilerini g\u00f6rsel a\u00e7\u0131dan daha anlaml\u0131 ve okunabilir bir \u015fekilde d\u00fczenleyen harika bir fonksiyon olan Pivot Table&#8217;\u0131n kullan\u0131m\u0131na de\u011finece\u011fiz.<\/p>\n<p>Pivot Table, sorgu sonucu gelen tablo \u00fczerindeki verileri belirli bir sat\u0131rdaki veriler merkezinde kolonlara ay\u0131rarak yatay olarak \u015fekillendiren ve verisel kar\u015f\u0131l\u0131k olarakta bu kolonla\u015ft\u0131r\u0131lan sat\u0131rlara denk gelen de\u011ferleri basan bir raporlama fonksiyonudur. Bu \u015fekilde y\u0131\u011f\u0131n verilerden anlaml\u0131 \u00f6zet tablolar \u00e7\u0131karmam\u0131zda olduk\u00e7a yard\u0131mc\u0131 olmaktad\u0131r.<\/p>\n<p>Bir sorguyu Pivot Table ile raporla\u015ft\u0131rabilmek i\u00e7in a\u015fa\u011f\u0131daki prototipte oldu\u011fu gibi hareket edilmelidir;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nSELECT * FROM\r\n(\r\n\tSELECT X, COUNT(*) Y FROM &#x5B;Table1]\r\n\tGROUP BY X\r\n) Table2\r\nPIVOT\r\n(\r\n\tSUM(Y) FOR X IN(&#x5B;VALUE1], &#x5B;VALUE2], &#x5B;VALUE3], &#x5B;VALUE4], &#x5B;VALUE5],...)\r\n) PivotTable\r\n<\/pre>\n<p>Dikkat ederseniz e\u011fer subqueryden gelen verileri externalquery ile &#8220;Table2&#8221; ad\u0131nda elde etmekte ve &#8220;PIVOT&#8221; fonksiyonu \u00e7a\u011fr\u0131larak &#8220;IN&#8221; parametresine girilen &#8220;X&#8221; kolonundaki de\u011ferler i\u00e7in olu\u015fturulacak kolonlara \u00f6zel &#8220;Y&#8221; toplam\u0131 bas\u0131lacakt\u0131r. Anlayaca\u011f\u0131n\u0131z &#8220;X&#8221; kolonunun verilerine \u00f6zel yatay bir tablo s\u00f6z konusu olacakt\u0131r.<\/p>\n<p>Konuyu \u00f6rneklendirmek ad\u0131na &#8220;North-Wind&#8221; veritaban\u0131 \u00fczerindeki &#8220;Satislar&#8221; tablosunu ele alal\u0131m;<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131.png\" alt=\"SQL Server&#039;da Pivot Table Kullan\u0131m\u0131\" width=\"955\" height=\"540\" class=\"aligncenter size-full wp-image-7683\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131.png 955w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-300x170.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-768x434.png 768w\" sizes=\"auto, (max-width: 955px) 100vw, 955px\" \/><\/a><\/p>\n<p>Dikkat ederseniz &#8220;Satislar&#8221; tablosunda &#8220;SevkSehri&#8221; ve &#8220;SevkUlkesi&#8221; olmak \u00fczere iki adet kolon mevcuttur.<\/p>\n<p>\u015eimdi&#8230;<\/p>\n<p>G\u00fcn geldi, \u015f\u00f6yle bir soru ve ihtiya\u00e7la kar\u015f\u0131la\u015f\u0131ld\u0131 diyelim;<\/p>\n<blockquote><p>Hangi \u015fehirde ka\u00e7 adet sat\u0131\u015f yap\u0131lm\u0131\u015ft\u0131r?<\/p><\/blockquote>\n<p>Bu soruya kar\u015f\u0131l\u0131k olarak yapabilece\u011fimiz en mant\u0131kl\u0131 hamle a\u015fa\u011f\u0131da oldu\u011fu gibi \u015fehirleri gruplay\u0131p yap\u0131lan i\u015flerin adedini almakt\u0131r.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-1.png\" alt=\"SQL Server&#039;da Pivot Table Kullan\u0131m\u0131\" width=\"458\" height=\"555\" class=\"aligncenter size-full wp-image-7696\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-1.png 458w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-1-248x300.png 248w\" sizes=\"auto, (max-width: 458px) 100vw, 458px\" \/><\/a><\/p>\n<p>\u0130stek ve ihtiyaca d\u00f6n\u00fck do\u011fru ve gereken sonu\u00e7 elde edildi\u011fi i\u00e7in amac\u0131m\u0131za ermi\u015f bulunmaktay\u0131z. Ama bu tabloyu yatay bir vaziyette ve direkt olarak \u015fehirsel bazda kolonlardan olu\u015fan bir rapor \u015feklinde elde etmek istiyorsak e\u011fer i\u015fte burada devreye Pivot Table girecektir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-2.png\" alt=\"SQL Server&#039;da Pivot Table Kullan\u0131m\u0131\" width=\"977\" height=\"223\" class=\"aligncenter size-full wp-image-7701\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-2.png 977w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-2-300x68.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-2-768x175.png 768w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/a><br \/>\nG\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere anla\u015f\u0131labilir, okunabilir ve harika bir rapor elde etmi\u015f bulunmaktay\u0131z<spam style=\"font-size:10px;\">(Bu \u00f6rnekte t\u00fcm \u015fehirler kolon olarak belirtilmemi\u015ftir)<\/spam>.<\/p>\n<p>Makalemizin i\u00e7eri\u011fini zenginle\u015ftirmek ve ilgili konuya daha \u00e7ok pratiksel a\u00e7\u0131 kazand\u0131rmak maksad\u0131yla bir \u00f6rnek \u00fczerinde daha inceleme yapmay\u0131 tercih ediyorum.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-3.png\" alt=\"SQL Server&#039;da Pivot Table Kullan\u0131m\u0131\" width=\"946\" height=\"431\" class=\"aligncenter size-full wp-image-7707\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-3.png 946w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-3-300x137.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/04\/SQL-Serverda-Pivot-Table-Kullan\u0131m\u0131-3-768x350.png 768w\" sizes=\"auto, (max-width: 946px) 100vw, 946px\" \/><\/a><br \/>\nYukar\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcne g\u00f6z atarsan\u0131z e\u011fer hangi personelin hangi \u00fclkeye ka\u00e7 sat\u0131\u015f yapt\u0131\u011f\u0131n\u0131 yatay boyutta sonu\u00e7 veren sorgu yaz\u0131lm\u0131\u015f bulunmaktad\u0131r.<\/p>\n<p>Subquery de yap\u0131lan inner join i\u015flemi neticesinde elde edilen personel bilgileri, \u00fclke bilgisine \u00f6zel kolonlara kar\u015f\u0131l\u0131k toplam yap\u0131lan sat\u0131\u015f bilgisini basacak Pivot i\u015flemi esnas\u0131nda s\u0131k\u0131nt\u0131s\u0131z bir \u015fekilde sonu\u00e7 tablosuna eklenmi\u015ftir.<\/p>\n<p>Bu harika SQL fonksiyonu hakk\u0131nda bilmenize de\u011fer son husus ise b\u00fcy\u00fck boyutlu verilerde performans a\u00e7\u0131s\u0131ndan olduk\u00e7a maliyetli olmas\u0131d\u0131r. E\u011fer ki performans s\u00f6z konusu olan ama bir yandan da milyonlarca veri \u00fczerinde i\u015flem yapman\u0131z\u0131 gerektiren raporsal \u00e7al\u0131\u015fmalar\u0131n\u0131zda bu maliyeti g\u00f6z \u00f6n\u00fcnde tutarak hareket etmenizi tavsiye ederim.<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde; SQL&#8217;de sorgu sonucu elde etti\u011fimiz tablo verilerini g\u00f6rsel a\u00e7\u0131dan daha anlaml\u0131 ve okunabilir bir \u015fekilde d\u00fczenleyen harika bir fonksiyon olan Pivot Table&#8217;\u0131n kullan\u0131m\u0131na de\u011finece\u011fiz. Pivot Table, sorgu sonucu gelen tablo \u00fczerindeki&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3415,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1082],"tags":[2270,2271,2269,2268,2272],"class_list":["post-7681","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sql-server","tag-pivot-table","tag-sql-pivot-table","tag-sql-server-pivot-table","tag-sql-serverda-pivot-table-kullanimi","tag-sql-tabloyu-yatay-hale-getirme"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/7681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=7681"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/7681\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3415"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=7681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=7681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=7681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}