交叉表列组排序

时间:2012-08-08 13:50:31

标签: sorting jasper-reports ireport crosstab

我正在尝试对 交叉表 中的列组进行排序,但 iReport 正按名称升序应用自己的排序。我尝试插入“按顺序排序”,但它没有用。 (字段未找到错误!)

按字段/变量添加自己的排序的正确方法是什么?或者我预先分类数据,按原样查看。

5 个答案:

答案 0 :(得分:3)

我有类似的问题。我想从数据库中显示“标题”,但我不希望它按字母顺序排序,因为标题的顺序是用户确定的。

我有一个HeadingOrder字段,我想要排序。要在排序表达式中使用它,它必须位于交叉表中。

我已经在我的专栏中进行了标题,因此创建了2个列组:1)HeadingOrder 2)标题。

我删除了显示标题订单号的文本字段,并折叠了该区域,因此未显示。这允许交叉表在使用HearingOrder字段作为支配排序时显示标题。

答案 1 :(得分:2)

替代方法:

  1. 将字段(将在Column-Group中使用)与sql查询本身中的sort by字段连接。假设字段名称是“title”,排序字段名称是“rank”,那么

    select (mt.rank ||'-'|| mt.title) as title from my_tab mt
    

    (以上查询特定于postgresql)

  2. 像往常一样在corsstab column-group中使用此“title”字段。

  3. 单击交叉表上“标题”列组的文本字段。

  4. 在属性面板中将其“文本字段表达式”编辑为 $ V {title} .split(“/”)[1]

答案 2 :(得分:1)

右键单击ReportInspector中的交叉表 - >单击交叉表数据 将打开一个新窗口。 现在点击数据已预先排序。这将完成工作

答案 3 :(得分:0)

user1120946,对我来说,诀窍是禁用子组的总数(例如标题),并且仅启用overgroup的总数(例如HeadingOrder)。然后将测量值放在HeadingOrderTotal列中。

这是对第二个答案的评论。

答案 4 :(得分:0)

这是 Crosstab Sorting in JasperReports 的副本,引用的“相当干净,但基于隐藏群组的棘手解决方案效果很好