You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Full Outer Join与Union All创建视图时出现缺失关键字错误

视图创建脚本的语法错误排查与修正

你的脚本存在三个核心语法问题,导致了"缺失关键字"错误:

1. CREATE VIEW语句缺少AS关键字,WITH子句位置错误

Oracle创建视图的标准语法是CREATE OR REPLACE VIEW <视图名> AS <查询语句>,你的脚本在视图名称后直接使用WITH子句,漏掉了关键的AS,且WITH子句必须作为查询语句的起始部分。

2. 连接条件存在拼写错误

连接条件里的pp.StorrDBKEy是笔误,正确写法应为pp.StoreDBKey(与右侧的lp.storedbkey对应),拼写错误会导致Oracle无法识别该列,触发语法解析错误。

3. 视图定义中ORDER BY的合规性

虽然你的ORDER BY放在了语句末尾,但Oracle视图中使用ORDER BY时,需确保整个联合查询结构完全正确,否则会伴随语法问题放大错误。

修正后的完整脚本

CREATE OR REPLACE FORCE VIEW "VW_RANGE_REPORT_Jul2023"
AS -- 新增缺失的AS关键字
WITH live_str AS (
    SELECT ------- from ---------- 
),
pend_str AS (
    SELECT ----------from -----------
),
pend_only AS (
    Select --------from ---------
)
SELECT  
NVL(lp.StoreNumber,pp.StoreNumber) AS StoreNumber, 
NVL(lp.StoreName,pp.StoreName) AS StoreName, 
lp.floorplanDBkey AS LiveFLRkey, 
lp.floorplanName As LiveFloorplanName, 
lp.FLRPENDDATE As LiveFLRPendDate, 
lp.FLRLIVEDATE AS LiveFLRLiveDate, 
lp.PlanogramKey AS LivePOGKey, 
lp.PlanogramName AS LivePOGName, 
lp.PlanogramPendingDate AS LivePOGPendDate, 
lp.PlanogramLiveDate AS LivePOGLiveDate, 
pp.floorplanDBkey AS PendFLkey, 
pp.floorplanName As PendFloorplanName, 
pp.FLRPENDDATE As PendFLRPendDate, 
pp.FLRLIVEDATE AS PendFLRLiveDate, 
pp.PlanogramKey AS PendPOGKey, 
pp.PlanogramName AS PendPOGName, 
pp.PlanogramPendingDate AS PendPOGPendDate, 
pp.PlanogramLiveDate AS PendPOGLiveDate
FROM live_str lp
FULL OUTER JOIN pend_str pp 
    ON pp.PlanogramVersionKey = lp.PlanogramVersionKey 
    AND pp.floorplanversionkey = lp.floorplanversionkey         
    AND pp.StoreNumber = lp.StoreNumber
    AND pp.StoreDBKey = lp.storedbkey -- 修正拼写错误
UNION ALL
SELECT  
po.StoreNumber,
po.StoreName,
NULL AS LiveFLRKey,
NULL AS LiveFloorplanName,
NULL AS LiveFLRPendDate,
NULL AS LiveFLRLiveDate,
NULL AS LivePOGKey,
NULL AS LivePOGName,
NULL AS LivePOGPendDate,
NULL AS LivePOGLiveDate,
po.FloorplanDBKey AS PendFLKey,
po.FloorplanName as PendFloorplanName,
po.FLRPENDDATE as PendFLRPendDate,
po.FLRLIVEDATE as PendFLRLiveDate,
po.PlanogramKey AS PendPOGKey,
po.PlanogramName AS PendPOGName,
po.PlanogramPendingDate AS PendPOGPendDate,
po.PlanogramLiveDate AS PendPOGLiveDate
FROM pend_only po
ORDER BY 1,3;

内容的提问来源于stack exchange,提问作者Rufina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:25:40