我已经在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
您不能将AS
用于Oracle中的表别名,只能用于列别名。因此,例如:
FROM tbr AS tb
...必须是:
FROM tbr tb
和其他内联视图相同。目前,解析器将
AS
视为不是很长的东西,并且它经常回落到ORA-00907,这通常并不意味着实际上存在一个不平衡的括号,只是找不到期望的括号,这通常是由于另一个语法错误。解析器无法解释您的意图,因此不能总是对错误的地方更具体,尤其是在涉及其他关键字时。
Sathya已经在注释中指出,并且datepart
不是内置的Oracle函数,因此可能无法解决您的所有问题。