ORA-00933:SQL命令未正确结束-PL/SQL



我正在尝试构建一个复杂的查询,但我不确定它的结构是否正确,因为我得到了错误:ORA-00933:SQL命令未正确结束。错误发生在第2行。求你了,你能帮我一下吗。非常感谢。

SELECT CNP,ValoareTotala 
FROM Vanzari AS V
RIGHT OUTER JOIN Functionar AS F
ON V.CNP= F.CNP
RIGHT OUTER JOIN Achizitii AS A
ON F.CNP= A.CNP
WHERE CNP in (SELECT CNP
FROM Achizitii
WHERE CNP =
(SELECT CNP
FROM Functionar
WHERE Nume='Alex Viseu'))
GROUP BY CNP, ValoareTotala
HAVING ValoareTotala>10
ORDER BY ValoareTotala DESC;

在Oracle中,不能将AS用于表别名。您可以使用列别名,这是可选的,但不允许使用表别名。您可以在语法图中看到这一点,该图显示了不带可选AS关键字的t_alias

因此,将其从所有三个引用中删除:

SELECT CNP,ValoareTotala 
FROM Vanzari V
RIGHT OUTER JOIN Functionar F
ON V.CNP= F.CNP
RIGHT OUTER JOIN Achizitii A
ON F.CNP= A.CNP
WHERE CNP in (SELECT CNP
FROM Achizitii
WHERE CNP =
(SELECT CNP
FROM Functionar
WHERE Nume='Alex Viseu'))
GROUP BY CNP, ValoareTotala
HAVING ValoareTotala>10
ORDER BY ValoareTotala DESC;

但是,您还需要弄清楚每列来自哪个表,特别是在同一列名出现在多个表中的情况下——由于具有联接条件ON V.CNP= F.CNPON F.CNP= A.CNP,列CNP存在于所有三个表中;所以对CNP的其他引用必须指定您的意思。

也不清楚为什么要使用子查询,尤其是再次引用相同表的子查询。

最新更新