物化视图是不是不支持子查询?

Javazzk001 2009-07-01 02:53:42
create materialized view cux_fa_deprn_cat_cost_MV
refresh complete on demand
start with to_date('23-05-2009 04:00:00', 'dd-mm-yyyy hh24:mi:ss') next trunc(SYSDATE+1)+240/1440
as
SELECT (SELECT 1 FROM fnd_user fu1 WHERE fu1.user_id = fu.user_id)
FROM fnd_user fu


报ORA-22818: subquery expressions not allowed here,

是不是不支持子查询?
...全文
673 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Javazzk001 2009-07-02
  • 打赏
  • 举报
回复
这样可以了,多谢,物化视图对这类子查询是不是有什么限制啊。
love_jk 2009-07-02
  • 打赏
  • 举报
回复
.....
DECODE(E.INSID,0,'否','是') SFYT,
DECODE(F.INSID,0,'否','是') SFSDDC,
.....
FROM TAX_NP_FXQKB A,
TAX_NP_NSPGQKBG B,
T_WF_ENG_INS_HSTY C,
TAX_NP_NPXAJYS D ,
TAX_NP_YTJZJL2 E,
TAX_NP_SDDCB F
WHERE B.INSID=A.INSID
AND C.ID=A.INSID
AND A.INSID=D.INSID(+)
AND C.STATUS='C'
and B.INSID=E.INSID(+)
and B.INSID=F.INSID(+)
AND A.NSRSBH LIKE '3402%';

可以这样试试看
Javazzk001 2009-07-02
  • 打赏
  • 举报
回复
真正的是这个执行起来有点问题。
CREATE MATERIALIZED VIEW TAX_NP_FXQKB_NSPG_NEW
REFRESH FORCE ON DEMAND
ENABLE QUERY REWRITE
AS

SELECT A.INSID,A.NSRSBH, A.PGSSRQ, A.PGSSQQ, A.PGSSQZ,A.PGXM, A.PGRY,B.CBSK_ZZS,B.ZNJ_ZZS, B.CBSK_XFS, B.ZNJ_XFS,
DECODE (B.TZYNSSDE_ZZS,NULL,B.TZYNSSDE_XFS,B.TZYNSSDE_ZZS) TZYNSSDE,
DECODE (B.CBSK_QYSDS,NULL,B.CBSK_WZSDS,B.CBSK_QYSDS) CBSK_QYSDS,
DECODE (B.ZNJ_QYSDS,NULL,B.ZNJ_WZSDS,B.ZNJ_QYSDS) ZNJ_QYSDS,
B.FK,
DECODE(D.YS_BZ,0,'是','否') SFYSJC,
DECODE((SELECT COUNT(*) JG FROM TAX_NP_YTJZJL2 WHERE INSID=B.INSID),0,'否','是') SFYT,
DECODE((SELECT COUNT(*) JG FROM TAX_NP_SDDCB WHERE INSID=B.INSID),0,'否','是') SFSDDC,
A.ZYYDWT,
C.STATUS
FROM TAX_NP_FXQKB A,
TAX_NP_NSPGQKBG B,
T_WF_ENG_INS_HSTY C,
TAX_NP_NPXAJYS D
WHERE B.INSID=A.INSID
AND C.ID=A.INSID
AND A.INSID=D.INSID(+)
AND C.STATUS='C'
AND A.NSRSBH LIKE '3402%';

单独的select执行没有问题,所以大家不用怀疑select的正确性,一旦创建物化视图就出现ORA-22818: subquery expressions not allowed here ,
用到的子查询只有
DECODE((SELECT COUNT(*) JG FROM TAX_NP_YTJZJL2 WHERE INSID=B.INSID),0,'否','是') SFYT,
DECODE((SELECT COUNT(*) JG FROM TAX_NP_SDDCB WHERE INSID=B.INSID),0,'否','是') SFSDDC,

去掉这两句,则能成功创建,大家帮忙看看怎么回事。
inthirties 2009-07-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 Javazzk001 的回复:]
这样可以了,多谢,物化视图对这类子查询是不是有什么限制啊。
[/Quote]

有,但是还没有琢磨出来,也没有找到专门的文档来详细描述这个的。

记下来,有空仔细研究一下。
inthirties 2009-07-01
  • 打赏
  • 举报
回复
好像是不支持你这样的写法哟。
zcs_1 2009-07-01
  • 打赏
  • 举报
回复
可以改造一下:

create materialized view cux_fa_deprn_cat_cost_MV
refresh complete on demand
start with to_date('23-05-2009 04:00:00', 'dd-mm-yyyy hh24:mi:ss') next trunc(SYSDATE+1)+240/1440
as
SELECT 1
FROM fnd_user
WHERE user_id IN (SELECT user_id FROM fnd_user1);
内容概要:本文档详细介绍了Oracle 11g中物化视图的增量复制应用。首先解释了物化视图的基本概念及其与普通视图的区别,接着阐述了物化视图的创建、刷新、修改、删除以及查询信息等日常操作,并提供了具体的SQL语句示例。文档还讨论了物化视图的限制条件,特别是快速刷新时的要求。此外,文档展示了两个实际应用场景:一是通过物化视图实现增量数据同步,包括源数据库和目标数据库之间的连接配置、物化视图日志的创建与管理、ETL工具的应用等;二是利用物化视图优化聚合子查询性能,通过预计算前一天的各项统计指标来加速报表生成。; 适合人群:熟悉Oracle数据库管理和维护的技术人员,尤其是从事数据仓库建设、ETL开发、数据库优化等相关工作的专业人员。; 使用场景及目标:①掌握物化视图的创建与管理技巧,能够根据业务需求设计合理的物化视图结构;②学会使用物化视图进行高效的数据同步和增量更新,确保数据的一致性和时效性;③理解如何通过物化视图优化复杂查询性能,提高报表系统的响应速度。; 阅读建议:由于文档涉及较多SQL语法和技术细节,建议读者在阅读过程中结合实际案例进行练习,重点关注物化视图的日志管理、刷新机制以及在不同场景下的应用策略。同时,对于涉及到的SQL语句,最好能在测试环境中进行验证,以便更好地理解和掌握相关知识点。

3,496

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧