oci_execute():ORA-00907:右括号缺失

问题描述 投票:0回答:1

我已经在PostgreSQL中编写了一个查询,该查询可以正常运行,但是在Oracle SQL中执行时不起作用。我精疲力尽试图找出问题所在。请帮助我修复它。

SELECT *
  FROM (
   SELECT dec AS ec,    
count(case when mfa !='0' then '1' end ) AS mls
     FROM tbr AS tb
    GROUP BY date_part('month',tb.req_date),date_part('year',tb.req_date),
   tb.dec
  ) AS tb1
   LEFT JOIN (
 SELECT date_part('month',enq_date) AS d1,
 date_part('year',enq_date) AS d2,  
 count(case when frd IS NOT NULL then '1' end) AS mfa
 FROM tlt
 GROUP BY date_part('month',enq_date),date_part('year',enq_date),
 dec
 ) AS t1
 ON t1.dec=tb1.dec
 AND t1.d1=tb1.month AND t1.d2=tb1.year
sql oracle9i table-alias
1个回答
1
投票

您不能将AS用于Oracle中的表别名,只能用于列别名。因此,例如:

FROM tbr AS tb

...必须是:

FROM tbr tb

和其他内联视图相同。目前,解析器将AS视为不是很长的东西,并且它经常回落到ORA-00907,这通常并不意味着实际上存在一个不平衡的括号,只是找不到期望的括号,这通常是由于另一个语法错误。解析器无法解释您的意图,因此不能总是对错误的地方更具体,尤其是在涉及其他关键字时。

Sathya已经在注释中指出,并且datepart不是内置的Oracle函数,因此可能无法解决您的所有问题。

© www.soinside.com 2019 - 2024. All rights reserved.