日期:2014-05-16 浏览次数:21392 次
比如原始查询为:
SELECT SUM(t.nums) NUMS FROM table t GROUP BY name
?这样的查询如果是oracle可能没问题,但如果在mysql里,很可能会报这样的错:
{}string:org.eclipse.birt.report.engine.api.EngineException: Column binding "NUMS" has referred to a data set column "NUMS" which does not exist.
?????? 提示你指定在data set中NUMS这个数据项没有被绑定。?说明你指定的别名NUMS完全没有生效,而且你如果到output columns里面看,这个字段可能已经被搞成了诸如“UNNAMED_1”之类的名字。原因是birt取的是结果集的列名而不是别名,但当遇到结果集为“SUM(nums)”或是“COUNT(nums)”这样的情况,就不知怎么处理了。
?????? 在尝试了更换各个版本的mysql-jdbc-connector driver之后,问题依然如故。
?????? 一个变通的解决方案就是让原来的查询UNION一个空的结果集:?
SELECT SUM(t.nums) NUMS FROM table t GROUP BY name UNION SELECT NULL NUMS FROM another_table WHERE 1=0
?another_table是什么不重要,因为不从里面取数据,但最好是存在的。
?这种情况下,一看到列名是null,birt就懵逼了,只有乖乖的用回别名NUMS,? 麻痹的贱货,早这样不就省得老子费事了么。
?