ORA-00933: SQL 命令未在带有 join 的子查询中正确结束
自从我上次执行 Oracle SQL 以来已经有一段时间了,希望有人能告诉我为什么我得到 933:
SELECT TRIM(A.ACCOUNTNUMBER) AS INDBDebnmbr
, TRIM(A.VOUCHER) AS INinvoicenmbr
, A.DATE_ AS INinvoiceDate
, A.DUEDATE AS INinvoiceDueDate
, A.TXT AS INDescription
, A.EXCHANGECODE AS INCurrencyCode
, subq.AMOUNTMST AS INOriginalamount
, subq.SETTLEAMOUNTMST AS INpaidAmount
, subq.OPENAMOUNT AS INOpenAmount
FROM (
SELECT DEBTRANS.VOUCHER AS VOUCHER, SUM(DEBTRANS.AMOUNTMST) AS AMOUNTMST
, SUM(DEBTRANS.SETTLEAMOUNTMST) AS SETTLEAMOUNTMST
, SUM(DEBTRANS.AMOUNTMST - DEBTRANS.SETTLEAMOUNTMST) AS OPENAMOUNT
FROM XAL_SUPERVISOR.DEBTRANS DEBTRANS
WHERE DEBTRANS.OPEN = 1 AND
DEBTRANS.TRANSTYPE <> 9 AND
(DEBTRANS.AMOUNTMST - DEBTRANS.SETTLEAMOUNTMST) <> 0 AND
DEBTRANS.DATASET = 'FIK'
GROUP BY DEBTRANS.VOUCHER) subq INNER JOIN DEBTRANS A ON A.VOUCHER = subq.VOUCHER
在 SQL Plus 中 预先感谢,
迈克尔
It's been a while for me since the last time I did Oracle SQL, hope someone can tell me why I get a 933 on:
SELECT TRIM(A.ACCOUNTNUMBER) AS INDBDebnmbr
, TRIM(A.VOUCHER) AS INinvoicenmbr
, A.DATE_ AS INinvoiceDate
, A.DUEDATE AS INinvoiceDueDate
, A.TXT AS INDescription
, A.EXCHANGECODE AS INCurrencyCode
, subq.AMOUNTMST AS INOriginalamount
, subq.SETTLEAMOUNTMST AS INpaidAmount
, subq.OPENAMOUNT AS INOpenAmount
FROM (
SELECT DEBTRANS.VOUCHER AS VOUCHER, SUM(DEBTRANS.AMOUNTMST) AS AMOUNTMST
, SUM(DEBTRANS.SETTLEAMOUNTMST) AS SETTLEAMOUNTMST
, SUM(DEBTRANS.AMOUNTMST - DEBTRANS.SETTLEAMOUNTMST) AS OPENAMOUNT
FROM XAL_SUPERVISOR.DEBTRANS DEBTRANS
WHERE DEBTRANS.OPEN = 1 AND
DEBTRANS.TRANSTYPE <> 9 AND
(DEBTRANS.AMOUNTMST - DEBTRANS.SETTLEAMOUNTMST) <> 0 AND
DEBTRANS.DATASET = 'FIK'
GROUP BY DEBTRANS.VOUCHER) subq INNER JOIN DEBTRANS A ON A.VOUCHER = subq.VOUCHER
In SQL Plus
Thanks in advance,
Michael
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你关于使用 8i 的评论解释了这一点。 ANSI '92 Join 语法直到 9i 才在 Oracle 中实现。
您将需要修改您的查询:
Your comment about using 8i explains it. The ANSI '92 Join syntax was not implemented in Oracle until 9i.
You will need to modify your query:
您要加入的 DEBTRANS 是什么?它是 XAL_SUPERVISOR.DEBTRANS 的另一个实例吗?
如果是这样,请不要在子查询中使用 DEBTRANS 作为别名,这会造成混乱。将其更改为其他内容并重试,例如
What is the DEBTRANS you're joining to, is it another instance of XAL_SUPERVISOR.DEBTRANS?
If so, please don't use DEBTRANS as an alias in the subquery, it is confusing. Change it to something else and try again, e.g.
的最后一行
INNER JOIN DEBTRANS A ON A.VOUCHER = subq.INinvoicenmbr
使用
代替INNER JOIN DEBTRANS A ON A.VOUCHER = subq.VOUCHER
Instead of the last line of
INNER JOIN DEBTRANS A ON A.VOUCHER = subq.VOUCHER
use
INNER JOIN DEBTRANS A ON A.VOUCHER = subq.INinvoicenmbr