【问题标题】:Is it possible to use SQL window functions with Jasper ReportServer?是否可以在 Jasper ReportServer 中使用 SQL 窗口函数?
【发布时间】:2013-06-16 13:50:51
【问题描述】:

关于 Jasper ReportServer 5.1 及其 DomEL(域表达式语言)的问题。

我有一个只有一张表的域。 T 是一个表,(day 日期,value 数字)是 Oracle 中的列及其类型。

所以,如果我尝试使用表达式在我的域中创建新的“计算字段”:

first_value(value) over (order by day)

出现错误消息:

Found 'over' after end of expression

我认为的主要原因:

http://community.jaspersoft.com/documentation/sql-functions

引用:

您可以在 DomEL 表达式中使用 SQL 函数,但仅限于有限的情况:

• 数据库必须支持这些功能。有关可用函数及其语法,请参阅供应商文档。 • 函数必须遵循逗号分隔参数约定。例如,您可以使用 TRIM(person.name),但不能使用 TRIM('Jr' FROM person.name) • 返回值的类型必须合适,无论是在表达式中还是对于计算字段的类型。 • SQL 上下文必须适合函数。例如,您不能在计算字段中使用 COUNT 等聚合函数,因为没有 GROUP BY 子句。 除了逗号分隔的参数模式,DomEL 验证不能强制这些标准。您必须确保任何 SQL 函数都满足这些条件,否则表达式在使用域创建报告时会导致错误。

我的问题是这种“强制”的结果吗?

如何使用 SQL 窗口函数构造计算字段?

Jasper 有什么方法可以实现 first_value/last_value/lead/lag 效果?

谢谢!

【问题讨论】:

  • 我不熟悉 Jasper,但我认为作为最后的手段,您总是可以将逻辑放在视图中。
  • 谢谢你,jonearles,但我不能这样做,因为日期范围取决于用户输入。如果我决定将逻辑放在视图中,我必须同意结果不取决于用户选择的时间段。因此,使用 last_value 或任何窗口函数根本没有任何好处。

标签: oracle jasper-reports jasperserver window-functions


【解决方案1】:

这是绝对不可能的。很伤心。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    • 2017-03-28
    • 2023-03-17
    • 2010-10-27
    相关资源
    最近更新 更多