oracle - Oracle 11g 子查询中缺少表达式
问题描述
我正在尝试在 oracle 11g 中运行此代码并收到此错误消息
// 第 4 行出错 ORA-00936: 缺少表达式 // 错误是 'j' @ "FROM JOB j," //
这是代码:
WITH sq AS (SELECT j.measurenumber, j.enterdate, trunc(c.passedoffdate) PassedOffDate,
d.yearid, d.weekid, d.quarterid, c, estimatesqft, e.totalamount EstimateTotal,
j.storenumber, c.quoteid, c.measurebitfield, c.soldstatus,
FROM JOB j, JOB_CLOSE c, dash_reportweek d, estimate_measure em,
estimate e,
WHERE measurenumber = c.measurenumber
AND j.measurenumber = em.measurenumber
AND em.estimateid = e.estimateid
AND j.measurenumber = o.measurenumber(+)
AND o.measurenumber IS NULL
AND j.enterdate BETWEEN d.startdate AND d.enddate
AND d.yearid = 2018 AND c.measurebitfield = 1
AND d.quarterid = 2)
SELECT sq.MEASURENUMBER,
SQ.ENTERDATE,
SQ.YEARID,
SQ.WEEKID,
SQ.QUARTERID,
SQ.PASSEDOFFDATE,
SQ.ESTIMATESQFT,
SQ.ESTIMATETOTAL,
SQ.STORENUMBER,
SQ.QUOTEID,
QUOTEDOLLARAMMOUNT,
SQFT,
SQ.SOLDSTATUS
FROM SQ,
( SELECT sq.measurenumber, SUM (unitprice) sqft
FROM sq, quoteitementry qi
WHERE sq.quoteid = qi.quoteid AND qi.quoteelementid = 25007
GROUP BY sq.measurenumber) v1,
( SELECT sq.measurenumber,
SUM (qi.quantity * qi.UNITPRICE) QuoteDollarAmmount
FROM sq, quoteitementry qi
WHERE sq.quoteid = qi.quoteid AND qi.active = 'T'
GROUP BY sq.measurenumber) v2
WHERE sq.measurenumber = v2.measurenumber(+)
AND sq.measurenumber = v1.measurenumber(+);
解决方案
如果您仔细查看代码,请在评论中突出显示的那一点...
c.soldstatus,
FROM JOB j
...你会注意到你有一个尾随逗号。查询投影中的最后一列后跟 FROM 而不是逗号。因为你有一个逗号 Oracle 期望另一个列被命名。因此例外。
推荐阅读
- r - 有没有办法突出 R 中的 dygraph 的传说
- r - 如何使用 grep 在 R 中使用第二个字符向量列表在数据帧列表中搜索模式匹配
- python - 序列化器字段可能命名不正确,并且与 `QuerySet` 实例上的任何属性或键都不匹配
- liquibase - Liquibase 无法使用用户名和密码读取 jdbc postegresql 连接字符串
- xcode - 仅在 TestFlight 中的 SwiftUI CloudKit 同步问题
- typescript - 如何根据同一对象的另一个键有条件地键入一个键
- c# - 一个线程上的 foreach 与 Parrallel.ForEach
- c# - 从任务中获取价值使 C# Xamarin 中的代码崩溃
- pulumi - 如何防止 Pulumi cli 改组堆栈设置文件中的配置
- java - 如何在原始目录中调用多个动画之一