我使用的查询(在链接的右侧)生成了这个结果(在左侧)。
请参阅http://www.sqlfiddle.com/#!2/f34f1/1
我是JasperReports和MySql的新手。我在尝试着
- 尚未计数 推荐的嫌疑人/已确认的客户
- 在 5 天内被推荐的客户数量
- 需要超过 5 天才能获得推荐的客户数量。
我能够计算 5 天内被推荐的客户数量
SELECT COUNT(*) from
(select p.patient_id,
(CASE WHEN st.smear_result <> 'NEGATIVE' OR st.gxp_result='MTB+'
THEN IF(DATEDIFF(r.date_referred,MIN(st.date_smear_tested)) IS NULL,'N/A',(DATEDIFF(r.date_referred,MIN(st.date_smear_tested))))
ELSE
(CASE WHEN st.smear_result='NEGATIVE' OR st.gxp_result='MTB-'
THEN IF(DATEDIFF(r.date_referred,MAX(st.date_smear_tested)) IS NULL,'N/A',(DATEDIFF(r.date_referred,MAX(st.date_smear_tested))))
ELSE 'N/A' end )END) as days_taken,
IF(r.date_referred IS NULL,'N/A',r.date_referred) date_referred
from patient as p
right outer join sputum_test as st on p.patient_id=st.patient_id
right 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
having days_taken <=5) AS SUBQUERY;
以及需要超过 5 天才能获得推荐的客户数量。
SELECT COUNT(*) from
(select p.patient_id,
(CASE WHEN st.smear_result <> 'NEGATIVE' OR st.gxp_result='MTB+'
THEN IF(DATEDIFF(r.date_referred,MIN(st.date_smear_tested)) IS NULL,'N/A',(DATEDIFF(r.date_referred,MIN(st.date_smear_tested))))
ELSE
(CASE WHEN st.smear_result='NEGATIVE' OR st.gxp_result='MTB-'
THEN IF(DATEDIFF(r.date_referred,MAX(st.date_smear_tested)) IS NULL,'N/A',(DATEDIFF(r.date_referred,MAX(st.date_smear_tested))))
ELSE 'N/A' end )END) as days_taken,
IF(r.date_referred IS NULL,'N/A',r.date_referred) date_referred
from patient as p
right outer join sputum_test as st on p.patient_id=st.patient_id
right 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
having days_taken > 5) AS SUBQUERY;
但是我如何获得尚未推荐的嫌疑人/已确认客户的数量?
我的计划是以某种方式将结果作为 2 列:
第 1 列:显示 3 个条件和第 2 列:显示它们旁边的行总和。
我将在iReport设计器中传递解决方案查询,以将 3 个条件的饼图制作为标签,并且它们的计数显示每个切片的百分比。