我想使用sales表创建物化视图。
--CREATE TABLE SALES_DATA (
-- Product varchar2(255) default NULL,
-- Date1 varchar2(255),
-- Sale varchar2(50) default NULL,
-- ID number default NULL
--);这是我的销售表。sales表的示例数据,
INSERT INTO SALES_DATA (Product,Date1,Sale,ID) VALUES ('Premarin','1977',22385,1);
INSERT INTO SALES_DATA (Product,Date1,Sale,ID) VALUES ('Bystolic','1985',23884,2);
INSERT INTO SALES_DATA (Product,Date1,Sale,ID) VALUES ('Hydrocodone/APAP','1955',30428,3);然后我想创建物化视图并得到下面的输出,

发布于 2020-12-27 19:11:02
您似乎在寻找条件聚合:
create materialized view mymview as
select product,
sum(case when date1 = 2016 then sale else 0 end) as sales_2016,
sum(case when date1 = 2017 then sale else 0 end) as sales_2017,
sum(case when date1 = 2018 then sale else 0 end) as sales_2018
...
from sales_data
group by product注意:您的示例模式没有使用正确的数据类型。date1是一个年份,所以它应该是一个数字(最好是一个date),而不是一个字符串。sale是一个数量,所以它应该是一个number,而不是一个字符串。如果你真的有这些字符串,那么你需要调整条件表达式,比如:
sum(case when date1 = '2016' then to_number(sale) else 0 end) as sales_2016发布于 2020-12-27 21:35:37
这篇评论太长了。
不能在实体化视图或其他视图中创建动态名称。你能做的最好的事情就是设置一个作业,定期检查新的“列”是否出现。如果是,则作业将删除当前实体化视图并添加新实体化视图。
https://stackoverflow.com/questions/65463376
复制相似问题