0

我使用的查询(在链接的右侧)生成了这个结果(在左侧)。
请参阅http://www.sqlfiddle.com/#!2/f34f1/1

我是JasperReportsMySql的新手。我在尝试着

  1. 尚未计数 推荐的嫌疑人/已确认的客户
  2. 在 5 天内被推荐的客户数量
  3. 需要超过 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 个条件的饼图制作为标签,并且它们的计数显示每个切片的百分比。

4

1 回答 1

0

像这样的东西应该工作:

SELECT SUM(days_taken <= 5) AS within_5_days,
       SUM(days_taken > 5) AS more_than_5,
       SUM(days_taken IS NULL) as not_yet_referred
FROM (...) AS subquery

显然,子查询应该NULL为非引用客户端生成,而不是N/A像原始子查询那样。

于 2013-08-30T07:28:38.753 回答