0

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

我计算了应该计算 3 个切片的百分比的天数,但是我应该在 Key Expression 和 Label Expression 中给出什么?尝试将 3 个切片标签自定义为 5 天内、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 运行。

您的帮助将不胜感激。

4

1 回答 1

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   |
-------------------------

有了它,您可以将“类型”作为标签表达式,将“总和”作为值表达式。所以你必须将查询更改为这样的

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 ...

然后你可以总结一下。

于 2013-08-30T17:59:02.173 回答