在交叉表报告中

时间:2015-10-11 08:42:07

标签: jasper-reports

我有一个交叉表报告,它将月份显示为行。当我运行报告时,行以aug开头并按升序继续。我如何根据我们的日历,如jan,feb,march .....对此报告进行排序。

我尝试在textField表达式下添加以下代码

<textfieldexpression class="java.lang.String">
    (
        $V{Month}.equals("JAN-15") ? "Jan" : 
        $V{Month}.equals("FEB-15") ? "Feb" :
        $V{Month}.equals("MAR-15") ? "Mar" :
        $V{Month}.equals("APR-15") ? "Apr" :
        $V{Month}.equals("MAY-15") ? "May" :
        $V{Month}.equals("JUN-15") ? "Jun" :
        $V{Month}.equals("JUL-15") ? "Jul" :
        $V{Month}.equals("AUG-15") ? "Aug" :
        $V{Month}.equals("SEP-15") ? "Sep" :
        $V{Month}.equals("OCT-15") ? "Oct" : 
        $V{Month}.equals("NOV-15") ? "Nov" : "Dec"
    )
</textfieldexpression>

但它返回相同的东西(未排序)。

2 个答案:

答案 0 :(得分:0)

您也可以通过查询进行排序。您可以使用预定义的函数。

以下是我用于根据您的要求进行排序的查询。 我正在使用Amazon Redshift

select * from(
 select to_char(sysdate,'Mon-YY') month_value
 union all 
 select to_char(add_months(sysdate,-1),'Mon-YY') 
 union all
 select to_char(add_months(sysdate,-3),'Mon-YY') 
 union all
 select to_char(add_months(sysdate,1),'Mon-YY') )
order by date_part(month,to_date(date1,'Mon-YY'))

order by 子句中,我将日期的字符串格式转换为数据类型日期,然后使用月份部分进行排序

希望这可以给你一个想法。

答案 1 :(得分:0)

我所做的是将查询编辑为(TO_CHAR(REQUEST_TIMESTAMP,&#39; MM&#39;)&#34; REQUESTDATE&#34;)返回日期,如01,02,03,... 。 然后我输入requestdate标题的表达式

$V{REQUESTDATE}.intern() == "01" ? "Jan" :
$V{REQUESTDATE}.intern() == "02" ? "Feb" :
$V{REQUESTDATE}.intern() == "03" ? "Mar" :
$V{REQUESTDATE}.intern() == "04" ? "Apr" :
$V{REQUESTDATE}.intern() == "05" ? "May" :
$V{REQUESTDATE}.intern() == "06" ? "Jun" :
$V{REQUESTDATE}.intern() == "07" ? "Jul" :
$V{REQUESTDATE}.intern() == "08" ? "Aug" :
$V{REQUESTDATE}.intern() == "09" ? "Sep" :
$V{REQUESTDATE}.intern() == "10" ? "Oct" :
$V{REQUESTDATE}.intern() == "11" ? "Nov" : "Dec" )

现在报告已经整理好了。