iReport:如何为饼图中的自定义标签选择计算的计数?

时间:2013-08-30 10:44:07

标签: jasper-reports ireport

我是 JasperReports 的新手,我正在尝试使用 iReports 5.1.0 生成饼图。

我有计算3个切片百分比的天数,但我应该在关键表达和标签表达中给出什么? 尝试在3天内自定义3个切片标签,超过5天并经过测试但未参考。

我正在通过此代码获取计数

SELECT SUM(subSet.days_taken <= 5) AS within_5_days,
       SUM(subSet.days_taken > 5) AS more_than_5,
       SUM(subSet.date_referred IS NULL) as not_yet_referred
FROM (select p.patient_id,
               (CASE
                 WHEN st.smear_result <> 'NEGATIVE' OR st.gxp_result = 'MTB+' THEN (DATEDIFF(r.date_referred, MIN(st.date_smear_tested)))
                 ELSE
                  (CASE
                 WHEN st.smear_result = 'NEGATIVE' OR st.gxp_result = 'MTB-' THEN  (DATEDIFF(r.date_referred, MAX(st.date_smear_tested)))

                END) END) as days_taken,
                r.date_referred as date_referred
          from patient as p
          left outer join sputum_test as st on p.patient_id = st.patient_id
          left outer join referral as r on r.patient_id = st.patient_id
         where p.suspected_by is not null
           and (p.patient_status = 'SUSPECT' or
               p.patient_status = 'CONFIRMED')
         group by p.patient_id) 
         as subSet

这也是我正在使用的DataSet运行。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你现在做的是你在一个元组中创建三列,所以你可能得到类似于以下内容的东西:'

--------------------------------------------------
| within_5_days | more_than_5 | not_yet_referred |
--------------------------------------------------
|       4       |       5     |       8          |
--------------------------------------------------

然而,饼图不会以该格式接受它。相反,你想要这个:

-------------------------
|     Type       | Summ | 
-------------------------
|within_5_days   |  4   |
|more_than_5     |  5   |
|not_yet_referred|  8   |
-------------------------

使用它可以将“Type”作为标签表达式,将“Sum”作为值表达式。因此,您必须将查询更改为此类

select CASE 
   WHEN subSet.days_taken <= 5 THEN 'within_5_days' 
   WHEN subSet.days_taken > 5 THEN 'more_than_5' 
   WHEN subSet.date_referred IS NULL THEN 'not_yet_referred'
END CASE AS Type, 1 AS Summ ...

然后你可以总结一下。