我们正在尝试将复杂的查询放入BIRT,以便获得一个带有'sum'作为其中一个值的报告。我们使用递归CTE生成总和。
我们的查询如下:
007 WITH CTETASKLIST(
008 SUPERVISORUSERNAME ,
009 SUBORDINATEUSERNAME
010 ) AS(
011 SELECT
012 SUPERVISORUSERNAME ,
013 SUBORDINATEUSERNAME
014 FROM
015 DBRO.SUBORDINATELINK
016 WHERE
017 SUBORDINATEUSERNAME = ?
018 UNION ALL SELECT
019 S.SUPERVISORUSERNAME ,
020 S.SUBORDINATEUSERNAME
021 FROM
022 DBRO.SUBORDINATELINK AS S ,
023 CTETASKLIST AS T
024 WHERE
025 S.SUPERVISORUSERNAME = T.SUBORDINATEUSERNAME
026 ) SELECT
027 OWNERFULLNAME ,
028 TOTALTASKS ,
029 (
030 SELECT
031 SUM(TA2.TOTALTASKS)
032 FROM
033 CTETASKLIST AS CTE JOIN DBRO.USERTASKTOTAL AS TA2
034 ON TA2.OWNERUSERNAME = CTE.SUBORDINATEUSERNAME
035 ) AS SUMTA
036 FROM
037 DBRO.USERTASKTOTAL AS TA
038 WHERE
039 OWNERUSERNAME = ?
我们的软件版本是:
BIRT:2.6.1
DB2:10.1
我们保证测试数据终止(无无限递归)。
我们得到的错误是SQLCODE = -104,SQLSTATE = 42601。解析器将子查询(第29行)的'(')标记为意外字符。
确切的错误讯息:Image http://i61.tinypic.com/33287ls.png
当直接针对数据库运行时(例如,使用DBEaver),此查询运行完全正常。但是,当我们将其粘贴到BIRT时,它会生成错误消息。有谁知道为什么会发生这种情况或解决问题?不幸的是,我们无法升级BIRT的版本,因为它是不同软件产品的一部分。
谢谢。