【问题标题】:SQL for DB2 not working in Crystal Reports用于 DB2 的 SQL 在 Crystal Reports 中不起作用
【发布时间】: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


【解决方案1】:

最后一个括号应该是有问题的。删除它,使您的代码如下所示:

...
...
IEWHS# FROM ASTDTA.ICBALMIE)

我在 AS/400 v6r1 系统上使用虚拟数据进行了测试。 SQL 将毫无问题地编译并生成数据。希望 Crystal Reports 在使用结果数据时不会有太大问题。我无权访问 Crystal Reports 来测试结果。

仅当您对主动提供的建议感兴趣时,我才会提出一种稍微不同的 SQL 编写方式:

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 ASTDTA.ICLOCMLM mlm
 left join ASTDTA.ICBLDTIR tir
        on mlm.LMLOC1 = tir.IRLOC1
        and mlm.LMLOC2 = tir.IRLOC2
        and mlm.LMLOC3 = tir.IRLOC3
where LMLTPC = 'PAL'

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多