
Как написать это команду SELECT * FROM (SELECT JOB, SAL, DEPTNO FROM SCOTT.EMP) PIVOT ( SUM(SAL)
FOR DEPTNO IN (10, 20, 30)) с использованием rollup и cube?

Ответы на вопрос

SELECT JOB,
SUM(CASE WHEN DEPTNO = 10 THEN SAL ELSE 0 END) AS "DEPTNO 10",
SUM(CASE WHEN DEPTNO = 20 THEN SAL ELSE 0 END) AS "DEPTNO 20",
SUM(CASE WHEN DEPTNO = 30 THEN SAL ELSE 0 END) AS "DEPTNO 30"
FROM SCOTT.EMP
GROUP BY ROLLUP (JOB);



Чтобы написать команду, использующую операторы ROLLUP и CUBE, для получения аналогичных результатов запроса с оператором PIVOT, можно использовать следующий код:
Для ROLLUP:
sqlSELECT JOB, SUM(SAL) AS "TOTAL_SALARY", DEPTNO
FROM SCOTT.EMP
GROUP BY ROLLUP(JOB, DEPTNO)
ORDER BY JOB, DEPTNO;
Для CUBE:
sqlSELECT JOB, SUM(SAL) AS "TOTAL_SALARY", DEPTNO
FROM SCOTT.EMP
GROUP BY CUBE(JOB, DEPTNO)
ORDER BY JOB, DEPTNO;
Обратите внимание, что в запросах с использованием операторов ROLLUP и CUBE вместо прямого указания столбцов DEPTNO и их значений (10, 20, 30), мы просто указываем столбец DEPTNO без ограничений. Это позволяет создать сводную таблицу, которая будет включать все возможные комбинации значений столбцов JOB и DEPTNO. Затем мы можем использовать условия ORDER BY для сортировки результатов в желаемом порядке.
Оба этих запроса создадут аналогичные результаты, которые вы получили с использованием оператора PIVOT.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili