【问题标题】:Why is DDL for Materialized view giving error?为什么物化视图的 DDL 会出错?
【发布时间】:2021-01-18 09:38:09
【问题描述】:

我正在尝试创建如下的物化视图并出现错误,请指教。

Oracle 版本:12.2.0.1.0

CREATE MATERIALIZED VIEW EDW_TEST_MV
REFRESH FAST ON DEMAND
ENABLE QUERY REWRITE
AS
(
SELECT
distinct TXN_REF,
ACQ_ENT_KEY, 
ACQ_SR_BNK_KEY, 
ISS_ENT_KEY,    
ISS_SR_BNK_KEY,     
ACQ_INST_ID,        
ISS_INST_ID,   
INTMNT_MRCHNT_KEY,
TXN_MD_KEY ,           
TXN_TP_KEY, 
TXN_TRMSN_DT ,              
TXN_LCL_DT ,           
TXN_TIMEOUT,             
SRC_ACQ_MEM  ,        
TXN_AUTH_CD, 
JV_ERROR_CD,
DST_DENIAL_CD,
DST_ISS_MEM,          
STTS,
ACQ_NODE_ID ,         
ISS_NODE_ID ,
RRN,
URN,
GOV_ORGSC_URN,
TXN_AMT,
SRC_SYS_KEY
FROM EDW_TEST_F)
group by 
ACQ_ENT_KEY, 
ACQ_SR_BNK_KEY, 
ISS_ENT_KEY,    
ISS_SR_BNK_KEY,     
ACQ_INST_ID,        
ISS_INST_ID,   
INTMNT_MRCHNT_KEY,
TXN_MD_KEY ,           
TXN_TP_KEY, 
TXN_TRMSN_DT ,              
TXN_LCL_DT ,           
TXN_TIMEOUT,             
SRC_ACQ_MEM  ,        
TXN_AUTH_CD, 
JV_ERROR_CD,
DST_DENIAL_CD,
DST_ISS_MEM,          
STTS,
ACQ_NODE_ID ,         
ISS_NODE_ID,            
SRC_SYS_KEY
);

group by
*
ERROR at line 34:
ORA-00933: SQL command not properly ended

【问题讨论】:

  • 行:FROM EDW_TEST_F) - 去掉括号
  • 如果您想将 FAST REFRESH 与 DISTINCT 和/或 GROUP 一起使用,您需要做更多的事情,请参阅 stackoverflow.com/questions/49578932/… 您还必须在基表上创建 MATERIALIZED VIEW LOGS
  • 谢谢。我已经创建了 MV 日志。同时我会检查快速刷新选项。如果我删除括号,我会收到错误:FROM EDW_TEST_F * ERROR at line 33: ORA-00979: not a GROUP BY expression
  • 为什么是distinct group by?您可以完全删除group by,因为您没有使用任何聚合函数

标签: oracle view materialized


【解决方案1】:

试试下面的。我在 from 子句之后删除了括号。

CREATE MATERIALIZED VIEW EDW_TEST_MV
REFRESH FAST ON DEMAND
ENABLE QUERY REWRITE
AS
(
SELECT
distinct TXN_REF,
ACQ_ENT_KEY, 
ACQ_SR_BNK_KEY, 
ISS_ENT_KEY,    
ISS_SR_BNK_KEY,     
ACQ_INST_ID,        
ISS_INST_ID,   
INTMNT_MRCHNT_KEY,
TXN_MD_KEY ,           
TXN_TP_KEY, 
TXN_TRMSN_DT ,              
TXN_LCL_DT ,           
TXN_TIMEOUT,             
SRC_ACQ_MEM  ,        
TXN_AUTH_CD, 
JV_ERROR_CD,
DST_DENIAL_CD,
DST_ISS_MEM,          
STTS,
ACQ_NODE_ID ,         
ISS_NODE_ID ,
RRN,
URN,
GOV_ORGSC_URN,
TXN_AMT,
SRC_SYS_KEY
FROM EDW_TEST_F
group by 
ACQ_ENT_KEY, 
ACQ_SR_BNK_KEY, 
ISS_ENT_KEY,    
ISS_SR_BNK_KEY,     
ACQ_INST_ID,        
ISS_INST_ID,   
INTMNT_MRCHNT_KEY,
TXN_MD_KEY ,           
TXN_TP_KEY, 
TXN_TRMSN_DT ,              
TXN_LCL_DT ,           
TXN_TIMEOUT,             
SRC_ACQ_MEM  ,        
TXN_AUTH_CD, 
JV_ERROR_CD,
DST_DENIAL_CD,
DST_ISS_MEM,          
STTS,
ACQ_NODE_ID ,         
ISS_NODE_ID,            
SRC_SYS_KEY
);

【讨论】:

  • 我上面已经提到过:去掉括号会报错:ERROR at line 33: ORA-00979: not a GROUP BY expression
猜你喜欢
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 2014-11-01
  • 2012-02-11
  • 2011-02-06
  • 1970-01-01
  • 2018-01-11
  • 2011-10-29
相关资源
最近更新 更多