我是 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运行。
非常感谢您的帮助。
答案 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 ...
然后你可以总结一下。