我有一个交叉表报告,它将月份显示为行。当我运行报告时,行以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>
但它返回相同的东西(未排序)。
答案 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" )
现在报告已经整理好了。