22
2019
Oracle SQL ile sütunları satırlara çevirme
Geçenlerde, devam eden bir projemizde Oracle SQL ile, bir tablodaki kolonların nasıl satırlara çevrilebileceği ile ilgili bir ihtiyaç hasıl oldu. Kısaca anlatalım.
Aşağıdaki gibi bir tablomuz olduğunu varsayalım.
PK | KOLON1 | KOLON2 | KOLON3 | KOLON4 | KOLON5 |
SATIR1 | Değer1-1 | Değer1-2 | Değer1-3 | ||
SATIR2 | Değer2-1 | ||||
SATIR3 | Değer3-1 | Değer3-2 | Değer3-3 | Değer3-4 | |
SATIR4 | Değer4-1 | Değer4-2 | |||
SATIR5 | Değer5-1 | Değer5-2 | Değer5-3 | Değer5-4 | Değer5-5 |
Aşağıdaki sorguyu kullanarak, buradaki her bir değere ait kolonları satır bazında çoklayarak yazdıracağız.
SELECT PK, KOLON_ADI, DEGER FROM TABLE UNPIVOT EXCLUDE NULLS (DEGER FOR (KOLON_ADI) IN (KOLON1, KOLON2, KOLON3, KOLON4, KOLON5 ) )
Sorgu sonucu aşağıdaki gibi olacaktır.
PK | KOLON_ADI | DEGER |
SATIR1 | KOLON1 | Değer1-1 |
SATIR1 | KOLON2 | Değer1-2 |
SATIR1 | KOLON3 | Değer1-3 |
SATIR2 | KOLON1 | Değer2-1 |
SATIR3 | KOLON1 | Değer3-1 |
SATIR3 | KOLON2 | Değer3-2 |
SATIR3 | KOLON3 | Değer3-3 |
SATIR3 | KOLON4 | Değer3-4 |
SATIR4 | KOLON1 | Değer4-1 |
SATIR4 | KOLON2 | Değer4-2 |
SATIR5 | KOLON1 | Değer5-1 |
SATIR5 | KOLON2 | Değer5-2 |
SATIR5 | KOLON3 | Değer5-3 |
SATIR5 | KOLON4 | Değer5-4 |
SATIR5 | KOLON5 | Değer5-5 |
EXCLUDE NULLS ifadesini kaldırdığınızda da sorgu aynı sonucu dönecektir.
Tablodaki boş değerleri de göstermek istiyorsak INCLUDE NULLS ifadesini kullanarak aşağıdaki gibi bir sonuca ulaşabiliriz.
PK | KOLON_ADI | DEGER |
SATIR1 | KOLON1 | Değer1-1 |
SATIR1 | KOLON2 | Değer1-2 |
SATIR1 | KOLON3 | Değer1-3 |
SATIR1 | KOLON4 | Null |
SATIR1 | KOLON5 | Null |
SATIR2 | KOLON1 | Değer2-1 |
SATIR2 | KOLON2 | Null |
SATIR2 | KOLON3 | Null |
SATIR2 | KOLON4 | Null |
SATIR2 | KOLON5 | Null |
SATIR3 | KOLON1 | Değer3-1 |
SATIR3 | KOLON2 | Değer3-2 |
SATIR3 | KOLON3 | Değer3-3 |
SATIR3 | KOLON4 | Değer3-4 |
SATIR3 | KOLON5 | Null |
SATIR4 | KOLON1 | Değer4-1 |
SATIR4 | KOLON2 | Değer4-2 |
SATIR4 | KOLON3 | Null |
SATIR4 | KOLON4 | Null |
SATIR4 | KOLON5 | Null |
SATIR5 | KOLON1 | Değer5-1 |
SATIR5 | KOLON2 | Değer5-2 |
SATIR5 | KOLON3 | Değer5-3 |
SATIR5 | KOLON4 | Değer5-4 |
SATIR5 | KOLON5 | Değer5-5 |
Son bir hatırlatma. Oracle database versiyonu 11g ve üstü için UNPIVOT kullanılabilirdir.
Kaynaklar:
http://www.sqlsnippets.com/en/topic-12698.html
https://stackoverflow.com/questions/38504172/oracle-show-columns-as-row
http://oraclecoder.com/tutorials/how-to-transpose-columns-to-rows-in-oracle–2435
şafak bilir
oldu. Medical Park ve Florence Nightingale İnsan Kaynakları birimlerinde
çalıştı. Yaklaşık 2,5 yıl Workcube ERP yazılımı ile İnsan Kaynakları-Bordro
danışmanlığı ve Proje Yöneticiliği görevlerinde bulundu. 2014 yılından bu
yana ise Oracle HR modülü İş Analisti olarak çalışmaktadır.
Latest posts by şafak bilir (see all)
- Oracle SQL ile sütunları satırlara çevirme - 22 Mayıs 2019
- Kullanıcı – Sorumluluk – Güvenlik Profili scripti - 19 Şubat 2019
- SSHR izin tarih çakışma kontrollerinde iptal statülü kayıtlar - 09 Şubat 2018
Gayet açıklayıcı olmuş. Sabahtan beri bunu arıyordum, inanılmaz bir şekilde çözdü benim işimi. Çok teşekkür ederim.