我们使用以下物化视图和基础视图来实现一些报告 . 物化视图完全从我们的应用程序手动刷新(通过DBMS_SNAPSHOT.REFRESH('“OVERALL_WEEKLY”','C');) . 在此调用之后,视图处于FRESH状态,但在对基础表执行任何DML操作之后,实例化视图将获得NEEDS_COMPILE状态 . 对视图的查询如下 . 不确定的表EBR_CYCLE_TIME和EBR_AREA正在经常变化 . 因此,提交时刷新不是我们的目的 .

有没有办法避免NEEDS_COMPILE状态?或者更好的是导致NEED_COMPILE状态的原因?

CREATE OR REPLACE FORCE VIEW "OTD_WEEKLY" AS

SELECT

otd.WEEK,

otd.SITE_ID,

otd.AREA_ID,

otd.OTD_METRIC AS CT_METRIC,

ROUND(100 * (SUM(otd.SUCCESS) / SUM(otd.CT_TOTAL_COUNT)), 2) AS OTD_VALUE

FROM

(SELECT

FC.MFL_FISCAL_YR_NUM * 100 + FC.MFL_FISCAL_WK_NUM AS WEEK,

r.BUSINESS_UNIT_ID AS PAL2_ID,

a.site_id AS SITE_ID,

a.area_def_id AS AREA_ID,

a.PRIORITY AS PRIORITY,

r.EBR_BUILD_SUBTYPE AS NPI,

r.CORPORATE_TD AS CTD,

ctd.NAME AS OTD_METRIC,

COUNT(r.ebr_number) AS CT_TOTAL_COUNT,

COUNT(

CASE

WHEN (ct.TIME_ELAPSED) > (ct.TARGET * 86400)

THEN NULL

ELSE r.ebr_number

END) AS SUCCESS,

COUNT(

CASE

WHEN (ct.TIME_ELAPSED) > (ct.TARGET * 86400)

THEN r.ebr_number

ELSE NULL

END) AS MISSED,

COUNT(DISTINCT r.ebr_number) AS TOTAL_NUMBER_OF_EBR

FROM ebr_cycle_time ct

JOIN ebr_area a

ON (a.id = ct.ebr_area_id

AND ct.status = 'FINISHED'

AND a.ship_date IS NOT NULL)

JOIN ebr_request r

ON (a.ebr_id = r.id AND r.submit_date >= to_date((select STRING_VALUE from EBR_STATUS_TABLE where key = 'REPORT_DATE_FROM'),'DD.MM.YY'))

JOIN EBR_GROUP_CYCLE_TIME_DEF gctd

ON (ct.CYCLE_TIME_GROUP_DEF = gctd.ID)

JOIN EBR_CYCLE_TIME_DEF ctd

ON (ctd.ID = gctd.CYCLE_TIME_DEF_ID

AND ctd.OTD_METRIC = 'Y')

JOIN EBR_CYCLE_TIME_GROUP ctg

ON (ctg.id = gctd.CYCLE_TIME_GROUP_ID)

JOIN EEBR_MC_LCL_FISCAL FC

ON (FC.MFL_QUERY_DT = TRUNC(a.ship_date) AND fc.MFL_QUERY_DT > add_months(trunc(sysdate, 'MM'), -8) AND fc.MFL_QUERY_DT <= sysdate)

GROUP BY

r.BUSINESS_UNIT_ID,

a.site_id,

a.area_def_id,

ctd.name,

fc.mfl_fiscal_yr_num,

fc.mfl_fiscal_wk_num,

ct.target,

a.PRIORITY,

r.CORPORATE_TD,

r.EBR_BUILD_SUBTYPE

) otd

GROUP BY

otd.WEEK,

otd.PAL2_ID,

otd.SITE_ID,

otd.AREA_ID,

otd.OTD_METRIC;

CREATE OR REPLACE FORCE VIEW "LAGGING_SCORE_WEEKLY" AS

SELECT

dsc.SITE_ID,

dsc.AREA_ID,

dsc.CT_METRIC,

(dsc.ARCHIVE_YEAR * 100 + dsc.ARCHIVE_WEEK) AS WEEK,

ROUND(AVG(SCORE), 4) AS SCORE

FROM

(SELECT

cts.site_id AS SITE_ID,

ls.AREA_DEF_ID AS AREA_ID,

ctd.name AS CT_METRIC,

ctd.id AS CT_ID,

fc.MFL_QUERY_DT AS ARCHIVE_DAY,

fc.MFL_FISCAL_WK_NUM AS ARCHIVE_WEEK,

fc.MFL_FISCAL_MTH_NUM AS ARCHIVE_MONTH,

fc.MFL_FISCAL_YR_NUM AS ARCHIVE_YEAR,

(fc.MFL_FISCAL_YR_NUM * 100 + fc.MFL_FISCAL_WK_NUM) AS WEEK,

CASE

WHEN SUM(cts.PENALTY) > 0

THEN SUM(cts.PENALTY)

ELSE 0

END AS EBR_PENALTY,

COUNT(DISTINCT cts.ebr_number) AS NUMBER_OF_EBR,

COUNT(DISTINCT (

CASE

WHEN cts.LAGGING_TIME > 0

THEN cts.ebr_number

ELSE NULL

END)) AS NUMBER_OF_LAGGING_EBR,

CASE

WHEN SUM(cts.PENALTY) > 0

THEN greatest(100 - 100 * (SUM(cts.PENALTY) / COUNT(DISTINCT cts.ebr_number)), 0)

ELSE 100

END AS SCORE

FROM EBR_CYCLE_TIME_SNAPSHOT cts

JOIN EBR_REQUEST r

ON (r.ebr_number = cts.ebr_number AND r.submit_date >= to_date((select STRING_VALUE from EBR_STATUS_TABLE where key = 'REPORT_DATE_FROM'),'DD.MM.YY'))

RIGHT JOIN EBR_LAGGING_STATISTIC ls

ON ((TRUNC(ls.stat_date) = TRUNC(cts.SNAPSHOT_TIME))

AND ls.site_id = cts.site_id

AND cts.AREA_DEF_ID = ls.AREA_DEF_ID

AND ls.CT_DEF_ID = cts.CYCLE_TIME_DEF_ID)

JOIN EBR_CYCLE_TIME_DEF ctd

ON (ls.CT_DEF_ID = ctd.id

AND ctd.OTD_METRIC = 'Y')

JOIN EEBR_MC_LCL_FISCAL fc

ON (TRUNC(ls.STAT_DATE) = TRUNC(fc.MFL_QUERY_DT) AND fc.MFL_QUERY_DT > add_months(trunc(sysdate, 'MM'), -8))

GROUP BY

cts.site_id,

ls.AREA_DEF_ID,

ctd.name,

ctd.id,

fc.MFL_QUERY_DT,

fc.MFL_FISCAL_WK_NUM,

fc.MFL_FISCAL_MTH_NUM,

fc.MFL_FISCAL_YR_NUM,

ls.NUMBER_OF_EBR,

ls.NUMBER_OF_LAGGING_EBR,

TRUNC(ls.STAT_DATE)

) dsc

GROUP BY dsc.SITE_ID,

dsc.AREA_ID,

dsc.CT_METRIC,

dsc.ARCHIVE_WEEK,

dsc.ARCHIVE_MONTH,

dsc.ARCHIVE_YEAR;

CREATE OR REPLACE FORCE VIEW "START_COMPLIANCE_WEEKLY" AS

SELECT

'Starts Compliance' AS CT_METRIC,

a.site_id AS SITE_ID,

a.area_def_id AS AREA_ID,

((lstw.MFL_FISCAL_YR_NUM * 100) + lstw.MFL_FISCAL_WK_NUM) AS WEEK,

ROUND(AVG(

CASE

WHEN ((ct.START_DATE IS NOT NULL

AND TRUNC((ct.START_DATE AT TIME ZONE 'MST') AT TIME ZONE s.time_zone) >

TRUNC((a.FIRST_FIRM_START_DATE AT TIME ZONE 'MST') AT TIME ZONE s.time_zone))

OR (ct.START_DATE IS NULL

AND next_day(TRUNC(sysdate) - 7, 'Sun') >

TRUNC((a.FIRST_FIRM_START_DATE AT TIME ZONE 'MST') AT TIME ZONE s.time_zone)))

THEN 0

ELSE 100

END), 2) AS SCORE

FROM ebr_area a

JOIN ebr_request r

ON (a.ebr_id = r.id AND a.FIRST_FIRM_START_DATE IS NOT NULL

AND a.FIRST_FIRM_START_DATE <= next_day(TRUNC(sysdate) - 7, 'Sun') AND AND r.status <> 'CANCELLED'

AND r.submit_date >= to_date((select STRING_VALUE from EBR_STATUS_TABLE where key = 'REPORT_DATE_FROM'),'DD.MM.YY'))

JOIN ebr_site s

ON (s.id = a.site_id)

LEFT JOIN

(SELECT

ct.START_DATE AS START_DATE,

ct.ROUND AS ROUND,

ct.ebr_area_id AS area_id

FROM ebr_cycle_time ct

JOIN EBR_GROUP_CYCLE_TIME_DEF gctd

ON (ct.CYCLE_TIME_GROUP_DEF = gctd.ID

AND ct.status <> 'NEW')

JOIN EBR_CYCLE_TIME_DEF ctd

ON (ctd.ID = gctd.CYCLE_TIME_DEF_ID

AND ctd.code = 'SITE_PROCESSING')

) ct ON (ct.area_id = a.id)

JOIN EEBR_MC_LCL_FISCAL lstw

ON (lstw.MFL_QUERY_DT = TRUNC(FIRST_FIRM_START_DATE) AND lstw.MFL_QUERY_DT > add_months(trunc(sysdate, 'MM'), -8))

GROUP BY

a.site_id,

s.time_zone,

a.area_def_id,

lstw.MFL_FISCAL_YR_NUM,

lstw.MFL_FISCAL_WK_NUM;

CREATE MATERIALIZED VIEW "OVERALL_WEEKLY"

AS SELECT s.code AS SITE_CODE,

s.name AS SITE_NAME,

reports.SITE_ID,

ad.NAME AS AREA,

ad.CODE AS AREA_CODE,

reports.AREA_ID,

reports.REPORT_TYPE,

reports.CT_METRIC,

reports.WEEK,

reports.SCORE

FROM (

(SELECT 'Starts Compliance' AS REPORT_TYPE,

AREA_ID,

SITE_ID,

CT_METRIC,

WEEK,

SCORE

FROM START_COMPLIANCE_WEEKLY

)

UNION

(SELECT 'OTD' AS REPORT_TYPE,

AREA_ID,

SITE_ID,

OTD_WEEKLY.CT_METRIC,

OTD_WEEKLY.WEEK,

OTD_WEEKLY.OTD_VALUE AS SCORE

FROM OTD_WEEKLY

)

UNION

(SELECT 'Lagging' AS REPORT_TYPE,

AREA_ID,

SITE_ID,

LAGGING_SCORE_WEEKLY.CT_METRIC,

LAGGING_SCORE_WEEKLY.WEEK,

LAGGING_SCORE_WEEKLY.SCORE

FROM LAGGING_SCORE_WEEKLY

)) reports

JOIN EBR_SITE s

ON (s.id = reports.SITE_ID)

JOIN EBR_AREA_DEF ad

ON (ad.id = reports.area_id);

oracle needs compile,Oracle:为什么在基础视图中的数据更改后,我的MW无效到NEEDS_COMPILE状态...相关推荐

  1. 关于从基于Mult-Org的视图中查询数据的问题(转)

    .Report视图中的数据? fnd_global.APPS_Initialize( user_id=>3070, resp_id=>50650, resp_appl_id =>20 ...

  2. 如何在使用ASPMVC4的分部视图中获取数据展示

    如何在使用ASPMVC4的分部视图中获取数据展示 在ASPMVC4中,创建的网站项目会用到分部视图,通过@Html.Partial("视图名")来加载到页面上: 但是如何把数据附加 ...

  3. sql server中如何修改视图中的数据?

    原文地址::https://www.cnblogs.com/xielong/p/10516975.html 相关文章 1.MYSQL 视图的不可以更改数据----https://blog.csdn.n ...

  4. mysql视图中可以删除数据吗_sql問題 删除视图中的数据,表中的数据会删除吗?

    如果你那个视图,是 单表的, 没写 触发器的. 那么 如果 删除视图中的数据 成功了,那么 表中的数据 就被删除了. 如果那个视图, 写了个 INSTEAD OF 触发器. 但是里面没有任何删除的动作 ...

  5. oracle显示多表数据,Oracle DB 使用连接显示多个表中的数据

    在Oracle9i之前的发行版中,该联接语法与美国国家标准协会(ANSI) 的标准不同.与以前发行版中的Oracle 专用联接语法相比,符合SQ • 编写SELECT语句,以使用等值联接和非等值联接访 ...

  6. sql server 怎么把视图中的数据存到另外一张表中_承上篇,自制插件优化Kep数据存储问题...

    序言:上篇说到Kep数据日志存储是将所有数据存到一张表内,不好筛选,为此抽空做了这个插件对Kep存到SQL的数据表进行优化处理. 一.插件安装及界面功能标注 1.双击安装包弹出安装向导,直接下一步直到 ...

  7. oracle汽车排量怎么写,这样的表中的数据怎样排量修改啊。

    办法由非常多, 我提供一种, 如果数据量非常大的话, 我建议用CTAS方法! SQL> select * from tt; COL_A COL_B       COL_C COL_D ----- ...

  8. ListView自定义视图中对Button按钮实现仅允许一个按钮处于开启状态

    2019独角兽企业重金招聘Python工程师标准>>> Android项目迭代,之前使用下拉框Spinner被替换成ListView,相应的实现也比之前更加复杂了,根据美工给出的界面 ...

  9. 【SpringMVC】返回视图中包含数据(ModelAndView)

    在普通的servlet项目中,Controller获取了数据,需要在视图显示,需要显示的调用request.setAttribute()等方法 在SpringMVC中,使用ModelAndView.M ...

最新文章

  1. 漫谈二叉树遍历(非递归)
  2. 两代“狗”开发者首次解答30多个问题,一定有你想了解的!(附论文下载)
  3. 今日工作总结及计划: 2022-02-14
  4. vue 实例化几种方式_Vue组件的三种调用方式
  5. Markdown转LaTeX的Python程序大全(持续更新)
  6. 【Ynoi2011】成都七中【树论】【点分树】【离线】【树状数组】
  7. linux 文件按照大小排列
  8. 腾讯视频下载安装免费装到手机_腾讯视频怎么上传个人本地视频
  9. php 中间表示语言,[转载]php 底层 探究之php编译过程及中间语言 opcode
  10. 关于Java交换两个对象的问题
  11. linux大io引起cpu使用率偏高,系统负载高, 但CPU使用率和IO都非常低
  12. 一篇文章教你学会如何使用CSS中的雪碧图(CSS Sprite)
  13. 计算机日常英语,计算机英语的常用句子
  14. 目前大多数个人计算机中可配置,2018年自考《计算机组成原理》试题五
  15. 第三届Apache Flink 极客挑战赛暨AAIG CUP电商推荐“抱大腿”攻击识别
  16. VM14 启动Ubutun16.04 黑屏,实用解决办法
  17. 学习:使用python+selenium实现路由器登陆账号密码爆破
  18. Java实现短信验证码
  19. java写app教程
  20. 学习笔记:新技术与新趋势(演讲者:王煜全-海银资本合伙人)

热门文章

  1. 面向连接的Socket Server的简单实现
  2. The database returned no natively generated identity value错误解决方案
  3. 关于前端使用JavaScript无法实现canvas打印问题的解决
  4. VS2013+openCV3.0无脑配置方法+解决警告问题【windows平台】
  5. Spark SQL中出现 CROSS JOIN 问题解决
  6. 【Sublime Text3】Package Control:Install Package不能使用解决方法
  7. Redis服务停止报错解决方案[NOAUTH Authentication required]
  8. 如何从Java中打印XML?
  9. 什么是Python的var_dump()的Python等价物? [重复]
  10. 在Visual Studio中使用Git [关闭]