Sql Oracle中缺少右括号

Sql Oracle中缺少右括号,sql,oracle,subquery,syntax-error,parentheses,Sql,Oracle,Subquery,Syntax Error,Parentheses,我有这样的疑问: select a.NPP, a.NAMA, a.JOB, a.STATUS, a.last_updated, a.UNIT_BESARAN, a.PERIODE, a.GOAL_ID,a.USER_APPROVED, a.DATE_APPROVED, a.USER_SUBMITTED, a.DATE_SUBMITTED from (select a.NPP, a.NAMA, b.job, b.status, to_char(b.last_updated, 'dd-MM-y

我有这样的疑问:

select a.NPP, a.NAMA, a.JOB, a.STATUS, a.last_updated, 
a.UNIT_BESARAN, a.PERIODE, a.GOAL_ID,a.USER_APPROVED, 
a.DATE_APPROVED, a.USER_SUBMITTED, a.DATE_SUBMITTED 
from (select a.NPP, a.NAMA, b.job, b.status, to_char(b.last_updated, 'dd-MM-yyyy HH24:MI:SS') AS last_updated, 
b.periode , b.goal_id, b.USER_APPROVED, b.DATE_APPROVED, b.USER_SUBMITTED, b.DATE_SUBMITTED, 
case when b.UNIT_BESARAN is null then a.UNIT_BESARAN else b.UNIT_BESARAN end UNIT_BESARAN 
from OL_PEGAWAI_DAILY a left join PFM_GOAL_HEADER b on a.PERSON_ID=b.PERSON_ID and b.last_status=1 and 
b.periode = '2015' and b.status is null order by b.STATUS asc) a where UNIT_BESARAN like 'DIVISI SOLUSI % KEAMANAN TEKNOLOGI INFORMASI' 
and a.status is null and npp not in (

--here subquery
select f.NPP from (select f.NPP, g.status, g.goal_id, 
case when g.UNIT_BESARAN is null then f.UNIT_BESARAN else g.UNIT_BESARAN end UNIT_BESARAN 
from OL_PEGAWAI_DAILY f left join PFM_GOAL_HEADER g on f.PERSON_ID=g.PERSON_ID and g.last_status=1  and 
g.periode = '2015' and g.status='2' and g.job is not null and g.last_updated is not null order by g.STATUS asc) f 
where UNIT_BESARAN like 'DIVISI SOLUSI %' and f.status is not null order by goal_id asc

) order by goal_id asc 
ORA-00907: missing right parenthesis
在子查询中,当我尝试运行它时,没有得到任何错误。当我尝试运行all查询时,会出现如下错误:

select a.NPP, a.NAMA, a.JOB, a.STATUS, a.last_updated, 
a.UNIT_BESARAN, a.PERIODE, a.GOAL_ID,a.USER_APPROVED, 
a.DATE_APPROVED, a.USER_SUBMITTED, a.DATE_SUBMITTED 
from (select a.NPP, a.NAMA, b.job, b.status, to_char(b.last_updated, 'dd-MM-yyyy HH24:MI:SS') AS last_updated, 
b.periode , b.goal_id, b.USER_APPROVED, b.DATE_APPROVED, b.USER_SUBMITTED, b.DATE_SUBMITTED, 
case when b.UNIT_BESARAN is null then a.UNIT_BESARAN else b.UNIT_BESARAN end UNIT_BESARAN 
from OL_PEGAWAI_DAILY a left join PFM_GOAL_HEADER b on a.PERSON_ID=b.PERSON_ID and b.last_status=1 and 
b.periode = '2015' and b.status is null order by b.STATUS asc) a where UNIT_BESARAN like 'DIVISI SOLUSI % KEAMANAN TEKNOLOGI INFORMASI' 
and a.status is null and npp not in (

--here subquery
select f.NPP from (select f.NPP, g.status, g.goal_id, 
case when g.UNIT_BESARAN is null then f.UNIT_BESARAN else g.UNIT_BESARAN end UNIT_BESARAN 
from OL_PEGAWAI_DAILY f left join PFM_GOAL_HEADER g on f.PERSON_ID=g.PERSON_ID and g.last_status=1  and 
g.periode = '2015' and g.status='2' and g.job is not null and g.last_updated is not null order by g.STATUS asc) f 
where UNIT_BESARAN like 'DIVISI SOLUSI %' and f.status is not null order by goal_id asc

) order by goal_id asc 
ORA-00907: missing right parenthesis

Oracle不允许在与
in
运算符一起使用的子查询中使用
orderby
子句(可能是因为它毫无意义,因为
in
运算符不关心顺序)。不幸的是,使用它会产生一个ORA-00907,而不是一些直接的错误,这些错误实际上解释了你做错了什么


长话短说-从
in
操作符中使用的查询中删除
order by GOOL\u id asc
,您应该会没事。

Oracle不允许在与
in
操作符一起使用的子查询中使用
order by
子句(大概是因为它毫无意义,操作符中的
不关心顺序)。不幸的是,使用它会产生一个ORA-00907,而不是一些直接的错误,这些错误实际上解释了你做错了什么

长话短说-从
in
操作符中使用的查询中删除
order by goal_id asc
,这样就可以了