【问题标题】:Can we create a table using the output from a PIVOT statement in Oracle?我们可以使用 Oracle 中 PIVOT 语句的输出创建表吗?
【发布时间】:2021-10-17 18:19:30
【问题描述】:

我有一个表,并在其上使用 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:缺少右括号”错误。

我的数据透视查询工作正常!

【问题讨论】:

  • 请编辑问题并显示完整的创建语句

标签: oracle pivot


【解决方案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;
MONTHS 'ABC123' 'DEF456'
December 2019 12 22
February 2020 14 24
January 2020 13 23
March 2020 15 25
November 2019 11 21
October 2019 10 20

db小提琴here

【讨论】:

    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多