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
,这样就可以了