Oracle Sql Таблица транспонирования - PullRequest
0 голосов
/ 18 июня 2020

Я хочу транспонировать таблицу ниже

NAME                  BRUT      MALIYET     NET
------------------------------------------------
BAZ ÜCRET             16944,44  16944,44    16944,44
MESAİ                 0         0           0
SABİT PRİMLER         6452,46   6452,46     6452,46
PERFORMANS PRİMİ      0         0           0
DİĞER ÖDEMELER        0         0           0
İŞÇİ SGK ÖDEMESİ      3278,27   3278,27 
İŞVEREN SGK ÖDEMESİ             4314,35 

в

NAME   BAZ ÜCRET  MESAİ    SABİT PRİMLER    PERFORMANS PRİMİ   DİĞER ÖDEMELER   İŞÇİ SGK ÖDEMESİ  İŞVEREN SGK ÖDEMESİ 
 ----------------------------------------------------------------------------------------------------------------------    
NET      16944,44   0       6452,46           0                  0                NULL            NULL
BRUT     16944,44   0       6452,46           0                  0                3278,27         NULL         
MALIYET  16944,44   0       6452,46           0                  0                3278,27         4314,35

как я могу повернуть несколько столбцов? Спасибо за любую помощь

1 Ответ

2 голосов
/ 19 июня 2020

Вы можете последовательно применять UNPIVOT и PIVOT как

WITH t AS
(
SELECT *
  FROM tab  --> this stands for your original table
UNPIVOT (deger FOR "Odeme Turu" IN ( brut, maliyet, net ))
)
SELECT * 
  FROM t
 PIVOT (MAX(deger) FOR name IN ('BAZ UCRET'           AS "Baz Ucret",
                                'MESAI'               AS "Mesai",
                                'SABIT PRIMLER'       AS "Sabit Primler", 
                                'PERFORMANS PRIMI'    AS "Performans Primi",
                                'DIGER ODEMELER'      AS "Diger Odemeler",
                                'ISCI SGK ODEMESI'    AS "Isci SGK Odemesi",
                                'ISVEREN SGK ODEMESI' AS "Isveren SGK Odemesi") )

Demo

...