#oracle #pivot
Вопрос:
У меня есть таблица, и использование оператора PIVOT над ней возвращает результат, который я искал, теперь мне нужно сохранить его в таблице для дальнейших вычислений.
Когда я делаю что-то подобное:
create table new_table as
(
select * from mytable
unpivot(period for months in
(
"October 2019",
"November 2019",
"December 2019",
"January 2020",
"February 2020",
"March 2020" ))
pivot(
avg(period)
for PROD_SKU in ('ABC123','DEF456')
)
order by 1);
он выдает ошибку «ORA-00907: отсутствует правая скобка».
Однако мой сводный запрос работает нормально!
Комментарии:
1. пожалуйста, отредактируйте вопрос и покажите полное заявление о создании
Ответ №1:
Да, вам не нужны скобки после AS
и до ;
.
Если у вас есть образцы данных:
CREATE TABLE mytable (
PROD_SKU,
"October 2019",
"November 2019",
"December 2019",
"January 2020",
"February 2020",
"March 2020"
) AS
SELECT 'ABC123', 10, 11, 12, 13, 14, 15 FROM DUAL UNION ALL
SELECT 'DEF456', 20, 21, 22, 23, 24, 25 FROM DUAL;
Затем:
create table new_table as
select *
from mytable
unpivot
(
period
for months in (
"October 2019",
"November 2019",
"December 2019",
"January 2020",
"February 2020",
"March 2020"
)
)
pivot
(
avg(period)
for PROD_SKU in ('ABC123','DEF456')
)
order by 1;
Затем new_table
содержит:
SELECT * FROM new_table;
месяцы «ABC123» «DEF456» Декабрь 2019 года 12 22 Февраль 2020 года 14 24 Январь 2020 года 13 23 Март 2020 года 15 25 Ноябрь 2019 года 11 21 Октябрь 2019 года 10 20
бд<>скрипка <>здесь