完整代码:
create materialized view log on TABLEAU.GW_STATISTICS
WITH ROWID,
SEQUENCE(AD_ID,day)including new values;
create materialized view log on TABLEAU.GW_CLIENTS
WITH ROWID,
SEQUENCE(id,NAME)including new values;
CREATE MATERIALIZED VIEW MV_CREATIVE_DCO_ADWORDS_2
NOLOGGING
NOCOMPRESS
CACHE
NOPARALLEL
REFRESH FAST ON DEMAND
as
select TABLEAU.GW_STATISTICS.ROWID,
ACC.ROWID,
ACC.NAME,
TABLEAU.GW_STATISTICS.AD_ID,
min(TABLEAU.GW_STATISTICS.DAY),
TABLEAU.GW_STATISTICS.DAY
FROM TABLEAU.GW_STATISTICS,
TABLEAU.GW_CLIENTS ACC
WHERE TABLEAU.GW_STATISTICS.CLIENTID=ACC.ID(+) and TABLEAU.GW_STATISTICS.DAY>TO_DATE('20200531','yyyymmdd')
group by TABLEAU.GW_STATISTICS.ROWID,
ACC.ROWID,
ACC.NAME,
TABLEAU.GW_STATISTICS.AD_ID,
TABLEAU.GW_STATISTICS.DAY;工作创建物化视图
WHERE TABLEAU.GW_STATISTICS.CLIENTID=ACC.ID(+)不工作创建物化视图
WHERE TABLEAU.GW_STATISTICS.CLIENTID=ACC.ID(+)
AND TABLEAU.GW_STATISTICS.DAY>TO_DATE('20200531','yyyymmdd')为什么我不能按日期添加一个过滤器?如何克服这一限制?
发布于 2021-09-09 12:27:12
原因:定义中缺少某些表的ROWID.
首先,您需要在选择的每个表中包含ROWID:
CREATE MATERIALIZED VIEW MV_CREATIVE_DCO_ADWORDS
NOLOGGING
NOCOMPRESS
CACHE
NOPARALLEL
REFRESH FAST ON DEMAND
as
select TABLEAU.GW_STATISTICS.ROWID,
ACC.ROWID,
ACC.NAME,
TABLEAU.GW_STATISTICS.AD_ID,
min(TABLEAU.GW_STATISTICS.DAY),
TABLEAU.GW_STATISTICS.DAY
FROM TABLEAU.GW_STATISTICS,
TABLEAU.GW_CLIENTS ACC
WHERE TABLEAU.GW_STATISTICS.CLIENTID=ACC.ID(+)
AND TABLEAU.GW_STATISTICS.DAY>TO_DATE('20200531','yyyymmdd')
group by TABLEAU.GW_STATISTICS.ROWID,
ACC.ROWID,
ACC.NAME,
TABLEAU.GW_STATISTICS.AD_ID,
TABLEAU.GW_STATISTICS.DAY;或外部联接的内表对联接列没有唯一的约束。
而且,TABLEAU.GW_STATISTICS.CLIENTID需要有一个唯一的约束。
发布于 2021-09-09 14:45:55
也许你需要使用别名:
select
TABLEAU.GW_STATISTICS.ROWID as GW_STATISTICS_ROWID,
ACC.ROWID AS ACC_ROWID,
ACC.NAME,
TABLEAU.GW_STATISTICS.AD_ID,
min(TABLEAU.GW_STATISTICS.DAY) AS MIN_DAY,
TABLEAU.GW_STATISTICS.DAY或者尝试
FROM (SELECT * FROM TABLEAU.GW_STATISTICS WHERE DAY > DATE '2020-05-31') STATS,
TABLEAU.GW_CLIENTS ACC
WHERE STATS.CLIENTID = ACC.ID(+)我想应该是一样的
https://stackoverflow.com/questions/69117974
复制相似问题