首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >物化视图

物化视图
EN

Stack Overflow用户
提问于 2020-12-27 14:24:44
回答 2查看 82关注 0票数 0

我想使用sales表创建物化视图。

代码语言:javascript
复制
--CREATE TABLE SALES_DATA (
--  Product varchar2(255) default NULL,
--  Date1 varchar2(255),
--  Sale varchar2(50) default NULL,
--  ID number default NULL
--);

这是我的销售表。sales表的示例数据,

代码语言:javascript
复制
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);

然后我想创建物化视图并得到下面的输出,

EN

回答 2

Stack Overflow用户

发布于 2020-12-27 19:11:02

您似乎在寻找条件聚合:

代码语言:javascript
复制
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,而不是一个字符串。如果你真的有这些字符串,那么你需要调整条件表达式,比如:

代码语言:javascript
复制
    sum(case when date1 = '2016' then to_number(sale) else 0 end) as sales_2016
票数 0
EN

Stack Overflow用户

发布于 2020-12-27 21:35:37

这篇评论太长了。

不能在实体化视图或其他视图中创建动态名称。你能做的最好的事情就是设置一个作业,定期检查新的“列”是否出现。如果是,则作业将删除当前实体化视图并添加新实体化视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65463376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档