【发布时间】:2013-08-07 16:10:54
【问题描述】:
我正在尝试在水晶报告中针对 AS/400 db2 数据库运行此 SQL,但出现错误
无法从数据库中检索数据”详细信息 42000 IBM ISeries ACCESS ODBC 驱动程序 DB2 UDB SQL0104 令牌无效。有效令牌 数据库供应商代码 104
(SELECT LMLTPC, COALESCE(IRLOC1,'') as IRLOC1, COALESCE(IRLOC2,'')
as IRLOC2, COALESCE(IRLOC3,'') as IRLOC3, IRPRT#, IRQOH#, IRWHS#,
'' as IEPRT#, '.00' as IEQOH#, '' as IELOC1, '' as IELOC2, '' as
IELOC3, '' as IEWHS#
FROM
(SELECT LMLTPC, LMLOC1, LMLOC2, LMLOC3 FROM ASTDTA.ICLOCMLM WHERE
LMLTPC='PAL') t1
left outer join
(SELECT IRLOC1, IRLOC2, IRLOC3, IRPRT#, IRQOH#, IRWHS# FROM
ASTDTA.ICBLDTIR ) t2
On LMLOC1=IRLOC1 AND LMLOC2=IRLOC2 AND LMLOC3=IRLOC3 )
UNION ALL
(SELECT ' ' as LMLTPC, ' ' as IRLOC1, ' ' as IRLOC2, ' ' as IRLOC3,
'' as IRPRT#, '.00' as IRQOH#, '' as IRWHS#, IEPRT#, IEQOH#, IELOC1,
IELOC2, IELOC3,
IEWHS# FROM ASTDTA.ICBALMIE) )
【问题讨论】:
-
最后一个右括号没有匹配的左括号。这是我注意到的第一件事。您可以尝试删除它并重试吗?
-
是的,我做到了。现在有一个不同的错误:SQL0199 Keyword Outer not expected UNION EXCEPT (DATABASE VENDOR CODE -199)
-
不使用左外连接,您可以尝试使用左连接吗?或者,尝试在我的答案中使用重写的查询,看看是否出现错误。
-
@zfus 左连接是左外连接。
-
@WarrenT,是的,你是对的,我理解。过去使用 DB2/400 和不同的 SQL IDE,我遇到过奇怪的错误。所以考虑让 OP 尝试将关键字 OUTER 排除在外,因为 SQL0199 警告我们。
标签: sql db2 ibm-midrange