BIRT交叉表维度自定义排序
问题:
用BIRT制作交叉表时,维度的排序默认是根据该字段的ASCII码升序,但有时候需要根据自定义来排序。
如图所示,该交叉表纵向扩展的维度是BEG_DATE,横向扩张有两层维度,分别是CLASS1、CLASS2。
CLASS1中的值有[‘公募组’,’非公募组’,’交易组’,’其他组’,’合计’],SQL里加了排序字段SORT1,最后输出的时候是ORDER BY BEG_DATE,SORT1,但是报表展示的时候是根据CLASS1的ASCII码重新排序,导致不是预期的排序效果。
解决思路:
1、SQL输出CLASS1字段的时候,字段前面拼接固定的几位用于排序的标记值
LPAD(T1.SORT1,3,‘0’)||T1.CLASS1 AS CLASS1 /* 此处前面拼接3位,用0左补齐 */
2、报表展示CLASS1时用birt函数处理一下,前三位截掉
BirtStr.right(dimension[“Group2”][“CLASS1”],BirtStr.charLength(dimension[“Group2”][“CLASS1”])-3)