Поворот двух столбцов в SQL - PullRequest
0 голосов
/ 11 октября 2018

У меня проблема с созданием сводной таблицы, но, во-первых, все мои структуры данных с наборами: https://pastebin.com/LiLHAMqs

И мне нужно создать sql для получения данных в этом формате .

Мне нужно использовать сводку.

У меня проблема с подсчетом количества кошек одного пола в каждой группе.

Вот мой SQL-запрос

SELECT  "Banda","Plec", NVL(SZEFUNIO,0) as SZEFUNIO, NVL(BANDZIOR,0) AS BANDZIOR, NVL(LOWCZY,0) AS LOWCZY, NVL(LAPACZ,0) AS LAPACZ, NVL(KOT,0) AS KOT, NVL(MILUSIA,0) AS MILUSIA, NVL(DZIELCZY,0) AS DZIELCZY,
(NVL(SZEFUNIO,0) + NVL(BANDZIOR,0) + NVL(LOWCZY,0) + NVL(LAPACZ,0) + NVL(KOT,0) + NVL(MILUSIA,0) + NVL(DZIELCZY,0)) as Suma
FROM   (SELECT b.nazwa "Banda", funkcja "Funkcja", plec "Plec", przydzial_myszy "przydzial", NVL(myszy_extra,0) "myszy_extra"  FROM Kocury k 
join Bandy b on b.numer_bandy = k.nr_bandy
)
PIVOT
   (  sum("przydzial" + NVL("myszy_extra",0))
     for "Funkcja"
     in ('SZEFUNIO' as SZEFUNIO, 'BANDZIOR' AS BANDZIOR, 'LOWCZY' AS LOWCZY, 'LAPACZ' AS LAPACZ, 'KOT' AS KOT, 'MILUSIA' AS MILUSIA, 'DZIELCZY' AS DZIELCZY ))
     order by "Banda";

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете использовать count over partition и указать имя (nazwa) и жанр (plec), например:

SELECT "Banda",
       "Plec",
       "Ile",
       NVL(SZEFUNIO, 0) as SZEFUNIO,
       NVL(BANDZIOR, 0) AS BANDZIOR,
       NVL(LOWCZY, 0) AS LOWCZY,
       NVL(LAPACZ, 0) AS LAPACZ,
       NVL(KOT, 0) AS KOT,
       NVL(MILUSIA, 0) AS MILUSIA,
       NVL(DZIELCZY, 0) AS DZIELCZY,
       (NVL(SZEFUNIO, 0) + NVL(BANDZIOR, 0) + NVL(LOWCZY, 0) +
       NVL(LAPACZ, 0) + NVL(KOT, 0) + NVL(MILUSIA, 0) + NVL(DZIELCZY, 0)) as Suma
  FROM (SELECT b.nazwa "Banda",
               count(*) over (partition by b.nazwa, k.plec) as "Ile",
               funkcja "Funkcja",
               plec "Plec",
               przydzial_myszy "przydzial",
               NVL(myszy_extra, 0) "myszy_extra"
          FROM Kocury k
          join Bandy b
            on b.numer_bandy = k.nr_bandy)
PIVOT(sum("przydzial" + NVL("myszy_extra", 0))
   for "Funkcja" in('SZEFUNIO' as SZEFUNIO,
                    'BANDZIOR' AS BANDZIOR,
                    'LOWCZY' AS LOWCZY,
                    'LAPACZ' AS LAPACZ,
                    'KOT' AS KOT,
                    'MILUSIA' AS MILUSIA,
                    'DZIELCZY' AS DZIELCZY))
 order by "Banda", "Ile";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...