{"id":26626,"date":"2025-07-28T06:15:26","date_gmt":"2025-07-28T03:15:26","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/"},"modified":"2025-07-28T06:15:26","modified_gmt":"2025-07-28T03:15:26","slug":"postgresqlde-pivot-tablo-olusturma-orneklerle","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/","title":{"rendered":"PostgreSQL&#8217;de Pivot Tablo Olu\u015fturma (\u00d6rneklerle)"},"content":{"rendered":"<p># PostgreSQL&#8217;de Pivot Table Nas\u0131l Olu\u015fturulur? (\u00d6rneklerle)<\/p>\n<p>PostgreSQL veritaban\u0131n\u0131zda karma\u015f\u0131k verileri \u00f6zetlemek ve daha okunabilir hale getirmek i\u00e7in mi \u00e7abal\u0131yorsunuz?  Sat\u0131rlar\u0131 s\u00fctunlara d\u00f6n\u00fc\u015ft\u00fcrerek verilerinizi daha anlaml\u0131 bir \u015fekilde sunmak istiyorsan\u0131z, do\u011fru yerdesiniz! Bu makalede, PostgreSQL&#8217;de pivot table (pivot tablo) olu\u015fturman\u0131n farkl\u0131 y\u00f6ntemlerini, ad\u0131m ad\u0131m a\u00e7\u0131klamalar\u0131, ger\u00e7ek d\u00fcnya \u00f6rneklerini ve performans optimizasyon tekniklerini ele alaca\u011f\u0131z.  Veri analizinizi bir \u00fcst seviyeye ta\u015f\u0131yacak bu rehber, yeni ba\u015flayanlardan ileri seviye kullan\u0131c\u0131lara kadar herkes i\u00e7in faydal\u0131 bilgiler sunuyor.<\/p>\n<p><strong>\u00d6\u011frenme Yol Haritas\u0131<\/strong><\/p>\n<p>Bu rehber, PostgreSQL pivot tablo olu\u015fturmay\u0131 \u00fc\u00e7 seviyede ele al\u0131yor:<\/p>\n<p>* <strong>Yeni Ba\u015flayan:<\/strong> Temel SQL komutlar\u0131yla basit pivot tablo olu\u015fturma.<br \/>\n* <strong>Orta Seviye:<\/strong> Ger\u00e7ek d\u00fcnya senaryolar\u0131 ve optimizasyon ipu\u00e7lar\u0131yla daha karma\u015f\u0131k pivot tablolar.<br \/>\n* <strong>\u0130leri Seviye:<\/strong> Performans analizi, karma\u015f\u0131k durumlar (edge cases) ve geli\u015fmi\u015f teknikler.<\/p>\n<p><strong>1. Giri\u015f: Neden PostgreSQL&#8217;de Pivot Table&#8217;a \u0130htiya\u00e7 Duyar\u0131z?<\/strong><\/p>\n<p>Veri analizi yaparken, genellikle birden fazla sat\u0131ra da\u011f\u0131lm\u0131\u015f verileri \u00f6zetleyip, daha anla\u015f\u0131l\u0131r bir \u015fekilde sunmam\u0131z gerekir. \u00d6rne\u011fin, bir e-ticaret \u015firketinde, her \u00fcr\u00fcn\u00fcn her ayki sat\u0131\u015flar\u0131n\u0131 g\u00f6steren bir tablo d\u00fc\u015f\u00fcnelim.  Bu tablo, her sat\u0131rda bir \u00fcr\u00fcn ve bir ay bilgisi i\u00e7erirken, sat\u0131\u015f rakamlar\u0131 ise ayr\u0131 bir s\u00fctunda bulunur.  Bu verileri, her s\u00fctunun bir ay\u0131, her sat\u0131r\u0131n bir \u00fcr\u00fcn\u00fc ve h\u00fccrelerin de sat\u0131\u015f rakamlar\u0131n\u0131 g\u00f6sterdi\u011fi bir tabloya d\u00f6n\u00fc\u015ft\u00fcrmek, daha kolay bir analiz yapmam\u0131z\u0131 sa\u011flar. \u0130\u015fte bu noktada pivot table&#8217;lar devreye girer.  PostgreSQL, bu d\u00f6n\u00fc\u015f\u00fcm\u00fc sa\u011flamak i\u00e7in \u00e7e\u015fitli teknikler sunar.<\/p>\n<p><strong>2. Temel Kavramlar:  PostgreSQL ve Veri Yap\u0131lar\u0131<\/strong><\/p>\n<p>PostgreSQL&#8217;de pivot tablo olu\u015fturman\u0131n temelinde, <code class=\"language-\">CASE<\/code> ifadeleri ve toplama fonksiyonlar\u0131 (\u00f6rne\u011fin, <code class=\"language-\">SUM<\/code>, <code class=\"language-\">AVG<\/code>, <code class=\"language-\">COUNT<\/code>) kullan\u0131m\u0131 yer al\u0131r.  Bu fonksiyonlar, verileri istenen s\u00fctunlara do\u011fru \u015fekilde da\u011f\u0131tmak i\u00e7in kullan\u0131l\u0131r.  Ayr\u0131ca, <code class=\"language-\">GROUP BY<\/code> deyimi, verileri farkl\u0131 gruplara ay\u0131rmada ve toplama i\u015flemlerini do\u011fru \u015fekilde ger\u00e7ekle\u015ftirmede hayati bir rol oynar.  \u00d6rne\u011fin, \u00fcr\u00fcn baz\u0131nda sat\u0131\u015flar\u0131 \u00f6zetlemek i\u00e7in, <code class=\"language-\">GROUP BY<\/code> deyimini \u00fcr\u00fcn kimli\u011fi s\u00fctununda kullanabiliriz.<\/p>\n<p><strong>3. Yeni Ba\u015flayanlar \u0130\u00e7in Uygulamal\u0131 K\u0131lavuz: Basit Pivot Table Olu\u015fturma<\/strong><\/p>\n<p>\u015eimdi, basit bir \u00f6rnekle ba\u015flayal\u0131m.  A\u015fa\u011f\u0131daki tabloda, farkl\u0131 \u015fehirlerdeki \u00fcr\u00fcn sat\u0131\u015flar\u0131n\u0131 g\u00f6steren verilerimiz olsun:<\/p>\n<p>| \u015eehir | \u00dcr\u00fcn | Sat\u0131\u015f |<br \/>\n|&#8212;|&#8212;|&#8212;|<br \/>\n| \u0130stanbul | A | 100 |<br \/>\n| \u0130stanbul | B | 150 |<br \/>\n| Ankara | A | 80 |<br \/>\n| Ankara | B | 120 |<br \/>\n| \u0130zmir | A | 90 |<br \/>\n| \u0130zmir | B | 100 |<\/p>\n<p>Bu verileri, \u015fehirleri sat\u0131r olarak, \u00fcr\u00fcnleri s\u00fctun olarak ve sat\u0131\u015flar\u0131 da h\u00fccre de\u011ferleri olarak g\u00f6steren bir pivot table olu\u015fturmak istiyoruz.  \u0130\u015fte bunu yapman\u0131n SQL sorgusu:<\/p>\n<pre class=\"language-sql\"><code>SELECT\n    \u015fehir,\n    SUM(CASE WHEN \u00fcr\u00fcn = 'A' THEN sat\u0131\u015f ELSE 0 END) AS \u00fcr\u00fcn_A,\n    SUM(CASE WHEN \u00fcr\u00fcn = 'B' THEN sat\u0131\u015f ELSE 0 END) AS \u00fcr\u00fcn_B\nFROM\n    sat\u0131\u015flar\nGROUP BY\n    \u015fehir;<\/code><\/pre>\n<p>Bu sorgu, her \u015fehir i\u00e7in \u00fcr\u00fcn A ve \u00fcr\u00fcn B&#8217;nin sat\u0131\u015flar\u0131n\u0131 ayr\u0131 s\u00fctunlarda g\u00f6sterir.  <code class=\"language-\">CASE<\/code> ifadesi, her \u00fcr\u00fcn i\u00e7in sat\u0131\u015flar\u0131 toplamakta kullan\u0131l\u0131r.  <code class=\"language-\">ELSE 0<\/code> k\u0131sm\u0131, bir \u015fehirde belirli bir \u00fcr\u00fcn\u00fcn sat\u0131lmad\u0131\u011f\u0131 durumlarda s\u0131f\u0131r de\u011ferini ekler, b\u00f6ylece pivot tabloda bo\u015fluk kalmaz.<\/p>\n<p><strong>4. Orta Seviye: Ger\u00e7ek D\u00fcnya \u00d6rne\u011fi ve Optimizasyon \u0130pu\u00e7lar\u0131<\/strong><\/p>\n<p>\u015eimdi, daha ger\u00e7ek\u00e7i bir senaryo ele alal\u0131m.  Bir e-ticaret sitesinin g\u00fcnl\u00fck sat\u0131\u015f verilerini i\u00e7eren bir tablo d\u00fc\u015f\u00fcnelim.  Bu tabloda, tarih, \u00fcr\u00fcn ad\u0131, sat\u0131\u015f adedi ve sat\u0131\u015f tutar\u0131 gibi s\u00fctunlar bulunabilir.  Amac\u0131m\u0131z, her \u00fcr\u00fcn\u00fcn haftal\u0131k toplam sat\u0131\u015flar\u0131n\u0131 g\u00f6steren bir pivot table olu\u015fturmakt\u0131r.<\/p>\n<p>Bu \u00f6rnekte, <code class=\"language-\">EXTRACT(WEEK FROM tarih)<\/code> fonksiyonunu kullanarak haftalar\u0131 belirleyebilir ve <code class=\"language-\">GROUP BY<\/code> deyimini hem hafta hem de \u00fcr\u00fcn ad\u0131 s\u00fctunlar\u0131nda kullanabiliriz.  A\u015fa\u011f\u0131daki gibi bir sorgu kullanabiliriz:<\/p>\n<pre class=\"language-sql\"><code>SELECT\n    EXTRACT(WEEK FROM tarih) AS hafta,\n    SUM(CASE WHEN \u00fcr\u00fcn_ad\u0131 = '\u00dcr\u00fcn X' THEN sat\u0131\u015f_adedi ELSE 0 END) AS \u00fcr\u00fcn_x,\n    SUM(CASE WHEN \u00fcr\u00fcn_ad\u0131 = '\u00dcr\u00fcn Y' THEN sat\u0131\u015f_adedi ELSE 0 END) AS \u00fcr\u00fcn_y,\n    SUM(CASE WHEN \u00fcr\u00fcn_ad\u0131 = '\u00dcr\u00fcn Z' THEN sat\u0131\u015f_adedi ELSE 0 END) AS \u00fcr\u00fcn_z\nFROM\n    sat\u0131\u015flar\nGROUP BY\n    hafta\nORDER BY\n    hafta;<\/code><\/pre>\n<p><strong>Optimizasyon \u0130pu\u00e7lar\u0131:<\/strong><\/p>\n<p>* <strong>\u0130ndeksler:<\/strong>  <code class=\"language-\">tarih<\/code> ve <code class=\"language-\">\u00fcr\u00fcn_ad\u0131<\/code> s\u00fctunlar\u0131na indeks eklemek, sorgu performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.<br \/>\n* <strong>G\u00f6r\u00fcn\u00fcm (View):<\/strong>  Karma\u015f\u0131k pivot tablo sorgular\u0131n\u0131 bir g\u00f6r\u00fcn\u00fcm olarak tan\u0131mlayarak, daha sonra bu g\u00f6r\u00fcn\u00fcm\u00fc daha basit sorgularda kullanabilirsiniz. Bu, kod okunabilirli\u011fini art\u0131r\u0131r ve performans optimizasyonunu kolayla\u015ft\u0131r\u0131r.<br \/>\n* <strong>CTE (Common Table Expression):<\/strong> Karma\u015f\u0131k sorgular\u0131 daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir par\u00e7alara ay\u0131rmak i\u00e7in CTE kullan\u0131n.<\/p>\n<p><strong>5. \u0130leri Seviye: Performans Analizi ve Karma\u015f\u0131k Durumlar (Edge Cases)<\/strong><\/p>\n<p>\u00c7ok b\u00fcy\u00fck veri setlerinde, yukar\u0131daki y\u00f6ntemler performans sorunlar\u0131na yol a\u00e7abilir.  Bu durumlarda, daha geli\u015fmi\u015f teknikler kullanmak gerekebilir.  \u00d6rne\u011fin, <code class=\"language-\">crosstab<\/code> fonksiyonu, daha karma\u015f\u0131k pivot tablolar olu\u015fturmak i\u00e7in kullan\u0131labilir.  Ancak, <code class=\"language-\">crosstab<\/code> fonksiyonu PostgreSQL&#8217;in ek bir uzant\u0131s\u0131 olan <code class=\"language-\">tablefunc<\/code> uzant\u0131s\u0131n\u0131 gerektirir.  Bu uzant\u0131y\u0131 y\u00fcklemeniz ve etkinle\u015ftirmeniz gerekecektir.<\/p>\n<p><strong>Performans Analizi:<\/strong><\/p>\n<p>* <strong>EXPLAIN ANALYZE:<\/strong>  Sorgu performans\u0131n\u0131 analiz etmek i\u00e7in <code class=\"language-\">EXPLAIN ANALYZE<\/code> komutunu kullan\u0131n.  Bu komut, sorgu plan\u0131n\u0131 ve y\u00fcr\u00fctme s\u00fcresini g\u00f6sterir.<br \/>\n* <strong>Sorgu Optimizasyonu:<\/strong>  <code class=\"language-\">EXPLAIN ANALYZE<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 kullanarak, sorguyu optimize edebilirsiniz.  \u00d6rne\u011fin, indeks eklemek veya sorguyu yeniden yazmak performans\u0131 art\u0131rabilir.<\/p>\n<p><strong>Edge Cases:<\/strong><\/p>\n<p>* <strong>Dinamik S\u00fctun Say\u0131s\u0131:<\/strong>  \u00dcr\u00fcn say\u0131s\u0131 \u00f6nceden bilinmiyorsa, dinamik olarak s\u00fctunlar olu\u015fturmak i\u00e7in PL\/pgSQL fonksiyonlar\u0131 kullanabilirsiniz.  Bu, daha esnek ve \u00f6l\u00e7eklenebilir bir \u00e7\u00f6z\u00fcm sunar.<br \/>\n* <strong>Bo\u015f De\u011ferler:<\/strong>  Veri setinde bo\u015f de\u011ferler varsa, <code class=\"language-\">CASE<\/code> ifadelerini dikkatlice kullanman\u0131z gerekebilir.  Bo\u015f de\u011ferleri nas\u0131l ele almak istedi\u011finizi belirlemeniz \u00f6nemlidir.<\/p>\n<p><strong>6.  Ger\u00e7ek D\u00fcnya Vaka Analizi: E-ticaret Sat\u0131\u015f Analizi<\/strong><\/p>\n<p>Bir e-ticaret \u015firketinin, \u00fcr\u00fcn kategorilerine g\u00f6re ayl\u0131k sat\u0131\u015flar\u0131n\u0131 analiz etmek istedi\u011fini d\u00fc\u015f\u00fcnelim.  Bu durumda, \u00f6ncelikle \u00fcr\u00fcn kategorilerini belirlemeli ve daha sonra her kategori i\u00e7in ayl\u0131k sat\u0131\u015flar\u0131 toplamal\u0131y\u0131z.  Bu, <code class=\"language-\">EXTRACT(MONTH FROM tarih)<\/code> fonksiyonu ve <code class=\"language-\">CASE<\/code> ifadeleri kullan\u0131larak yap\u0131labilir.  Performans\u0131 art\u0131rmak i\u00e7in, \u00fcr\u00fcn kategorisi ve tarih s\u00fctunlar\u0131na indeks eklemek \u00f6nemlidir.  Ayr\u0131ca, b\u00fcy\u00fck veri setleri i\u00e7in <code class=\"language-\">crosstab<\/code> fonksiyonunu veya PL\/pgSQL fonksiyonlar\u0131n\u0131 kullanmay\u0131 d\u00fc\u015f\u00fcnebiliriz.<\/p>\n<p><strong>7.  PostgreSQL Pivot Tablo Olu\u015fturma Tekniklerinin Kar\u015f\u0131la\u015ft\u0131r\u0131lmas\u0131<\/strong><\/p>\n<p>PostgreSQL&#8217;de pivot tablo olu\u015fturman\u0131n birka\u00e7 yolu vard\u0131r.  <code class=\"language-\">CASE<\/code> ifadeleri en basit ve yayg\u0131n y\u00f6ntemdir, ancak dinamik s\u00fctunlar i\u00e7in uygun de\u011fildir.  <code class=\"language-\">crosstab<\/code> fonksiyonu daha geli\u015fmi\u015f bir se\u00e7enektir, ancak <code class=\"language-\">tablefunc<\/code> uzant\u0131s\u0131n\u0131 gerektirir.  PL\/pgSQL fonksiyonlar\u0131 ise en esnek \u00e7\u00f6z\u00fcm\u00fc sunar, ancak daha karma\u015f\u0131kt\u0131r.  Se\u00e7ilecek y\u00f6ntem, verilerin yap\u0131s\u0131na ve b\u00fcy\u00fckl\u00fc\u011f\u00fcne, ayr\u0131ca performans gereksinimlerine ba\u011fl\u0131d\u0131r.<\/p>\n<p><strong>8.  PostgreSQL Pivot Tablo Olu\u015ftururken S\u0131k\u00e7a Yap\u0131lan Hatalar ve \u00c7\u00f6z\u00fcmleri<\/strong><\/p>\n<p>* <strong>Yanl\u0131\u015f <code class=\"language-\">GROUP BY<\/code> kullan\u0131m\u0131:<\/strong>  <code class=\"language-\">GROUP BY<\/code> deyimi, pivot tabloda \u00f6zetlenecek s\u00fctunlar\u0131 do\u011fru bir \u015fekilde belirtmelidir.<br \/>\n* <strong><code class=\"language-\">CASE<\/code> ifadesinde yanl\u0131\u015f ko\u015fullar:<\/strong>  <code class=\"language-\">CASE<\/code> ifadesindeki ko\u015fullar, verileri do\u011fru s\u00fctunlara ay\u0131rmak i\u00e7in dikkatlice yaz\u0131lmal\u0131d\u0131r.<br \/>\n* <strong>Performans sorunlar\u0131:<\/strong>  B\u00fcy\u00fck veri setleri i\u00e7in, indeks eklemek ve sorguyu optimize etmek \u00f6nemlidir.<br \/>\n* <strong><code class=\"language-\">crosstab<\/code> fonksiyonunun yanl\u0131\u015f kullan\u0131m\u0131:<\/strong>  <code class=\"language-\">crosstab<\/code> fonksiyonunu kullan\u0131rken, do\u011fru parametreleri belirtmek ve <code class=\"language-\">tablefunc<\/code> uzant\u0131s\u0131n\u0131 y\u00fcklemek \u00f6nemlidir.<\/p>\n<p><strong>9.  Sonu\u00e7:  PostgreSQL Pivot Tablo Olu\u015fturma Yolculu\u011funuz<\/strong><\/p>\n<p>Bu makalede, PostgreSQL&#8217;de pivot tablo olu\u015fturman\u0131n farkl\u0131 y\u00f6ntemlerini, ad\u0131m ad\u0131m a\u00e7\u0131klamalar\u0131, ger\u00e7ek d\u00fcnya \u00f6rneklerini ve performans optimizasyon tekniklerini ele ald\u0131k.  Ba\u015flang\u0131\u00e7 seviyesinden ileri seviyeye kadar her seviyedeki kullan\u0131c\u0131 i\u00e7in faydal\u0131 bilgiler sunduk.  Unutmay\u0131n ki, en uygun y\u00f6ntem, verilerinizin yap\u0131s\u0131na ve b\u00fcy\u00fckl\u00fc\u011f\u00fcne, ayr\u0131ca performans gereksinimlerinize ba\u011fl\u0131d\u0131r.  Veri analizinizi kolayla\u015ft\u0131rmak ve daha etkili kararlar almak i\u00e7in bu teknikleri kullanabilirsiniz.  Daha detayl\u0131 bilgi ve ileri d\u00fczey PostgreSQL konular\u0131 i\u00e7in [fatihsoysal.com](https:\/\/fatihsoysal.com) adresini ziyaret edebilirsiniz.<\/p>\n<p><strong>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/strong><\/p>\n<p>1. <strong>PostgreSQL&#8217;de pivot tablo olu\u015fturman\u0131n en iyi yolu nedir?<\/strong>  En iyi y\u00f6ntem, verilerin yap\u0131s\u0131na ve b\u00fcy\u00fckl\u00fc\u011f\u00fcne ba\u011fl\u0131d\u0131r.  K\u00fc\u00e7\u00fck veri setleri i\u00e7in <code class=\"language-\">CASE<\/code> ifadeleri yeterli olabilirken, b\u00fcy\u00fck veri setleri i\u00e7in <code class=\"language-\">crosstab<\/code> fonksiyonu veya PL\/pgSQL fonksiyonlar\u0131 daha uygun olabilir.<\/p>\n<p>2. <strong>Pivot tablo olu\u015ftururken performans\u0131 nas\u0131l art\u0131rabilirim?<\/strong>  \u0130ndeksler eklemek, sorguyu optimize etmek ve CTE veya g\u00f6r\u00fcn\u00fcm kullanmak performans\u0131 art\u0131rabilir.<\/p>\n<p>3. <strong><code class=\"language-\">crosstab<\/code> fonksiyonu nedir ve nas\u0131l kullan\u0131l\u0131r?<\/strong>  <code class=\"language-\">crosstab<\/code> fonksiyonu, <code class=\"language-\">tablefunc<\/code> uzant\u0131s\u0131 kullan\u0131larak karma\u015f\u0131k pivot tablolar olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.  Kullan\u0131m\u0131, standart SQL sorgular\u0131ndan daha karma\u015f\u0131kt\u0131r ve detayl\u0131 bir ara\u015ft\u0131rma gerektirir.<\/p>\n<p>4. <strong>Dinamik s\u00fctun say\u0131s\u0131 nas\u0131l olu\u015fturulur?<\/strong>  Dinamik s\u00fctun say\u0131s\u0131 olu\u015fturmak i\u00e7in PL\/pgSQL fonksiyonlar\u0131 kullanabilirsiniz.  Bu, daha esnek ve \u00f6l\u00e7eklenebilir bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<p>5. <strong>Bo\u015f de\u011ferleri pivot tabloda nas\u0131l ele alabilirim?<\/strong>  <code class=\"language-\">CASE<\/code> ifadelerinde bo\u015f de\u011ferleri nas\u0131l ele almak istedi\u011finizi belirlemeli ve buna g\u00f6re kodunuzu yazmal\u0131s\u0131n\u0131z.  \u00d6rne\u011fin, bo\u015f de\u011ferleri s\u0131f\u0131r olarak g\u00f6stermek veya bo\u015f b\u0131rakmak isteyebilirsiniz.<\/p>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"# PostgreSQL&#8217;de Pivot Table Nas\u0131l Olu\u015fturulur? (\u00d6rneklerle) PostgreSQL veritaban\u0131n\u0131zda karma\u015f\u0131k verileri \u00f6zetlemek ve daha okunabilir hale getirmek i\u00e7in&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[644],"tags":[],"class_list":{"0":"post-26626","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-postgresql","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PostgreSQL&#039;de Pivot Tablo Olu\u015fturma (\u00d6rneklerle)<\/title>\n<meta name=\"description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL&#039;de Pivot Tablo Olu\u015fturma (\u00d6rneklerle)\" \/>\n<meta property=\"og:description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-28T03:15:26+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"PostgreSQL&#8217;de Pivot Tablo Olu\u015fturma (\u00d6rneklerle)\",\"datePublished\":\"2025-07-28T03:15:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/\"},\"wordCount\":1447,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/\",\"name\":\"PostgreSQL'de Pivot Tablo Olu\u015fturma (\u00d6rneklerle)\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-07-28T03:15:26+00:00\",\"description\":\"Hi\u00e7bir etiketi bulunamad\u0131.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL&#8217;de Pivot Tablo Olu\u015fturma (\u00d6rneklerle)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL'de Pivot Tablo Olu\u015fturma (\u00d6rneklerle)","description":"Hi\u00e7bir etiketi bulunamad\u0131.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/","og_locale":"tr_TR","og_type":"article","og_title":"PostgreSQL'de Pivot Tablo Olu\u015fturma (\u00d6rneklerle)","og_description":"Hi\u00e7bir etiketi bulunamad\u0131.","og_url":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-07-28T03:15:26+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"8 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"PostgreSQL&#8217;de Pivot Tablo Olu\u015fturma (\u00d6rneklerle)","datePublished":"2025-07-28T03:15:26+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/"},"wordCount":1447,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["PostgreSQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/","url":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/","name":"PostgreSQL'de Pivot Tablo Olu\u015fturma (\u00d6rneklerle)","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-07-28T03:15:26+00:00","description":"Hi\u00e7bir etiketi bulunamad\u0131.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-pivot-tablo-olusturma-orneklerle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL&#8217;de Pivot Tablo Olu\u015fturma (\u00d6rneklerle)"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/26626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=26626"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/26626\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=26626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=26626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=26626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}