select m.抗生素,sum(m.总人数) as 总人数,sum(m.敏感) as 敏感 ,sum(m.耐药) as 耐药,sum(m.中介) as 中介,
sum(m.其他) as 其他,ROUND(sum(m.敏感)/sum(m.总人数)*100,2) AS 敏感率,ROUND(sum(m.耐药)/sum(m.总人数)*100,2) AS 耐药率,
ROUND(sum(m.中介)/sum(m.总人数)*100,2) AS 中介率
from (
--住院
select d.中文名 as 抗生素,
count(distinct f.病人id || f.主页id || t.审核时间||c.结果类型) 总人数,
count(distinct decode(c.结果类型,
'S-敏感',
f.病人id || f.主页id || t.审核时间||c.结果类型)) 敏感,
count(distinct decode(c.结果类型, 'R-耐药', f.病人id || f.主页id||审核时间||c.结果类型)) 耐药,
count(distinct decode(c.结果类型, 'I-中介', f.病人id || f.主页id||审核时间||c.结果类型)) 中介,
count(distinct (case when c.结果类型 not in('S-敏感', 'R-耐药', 'I-中介') then f.病人id || f.主页id||审核时间||c.结果类型 end)) 其他
from 检验报告细菌 b,
检验报告药敏 c,
检验报告记录 t,
检验药敏 d,
检验申请组合 e,
病人医嘱记录 f
where c.药敏id = d.id
and b.id = c.结果id
and b.标本id = t.id
and b.标本id = e.标本id
and e.医嘱id = f.id
and f.病人来源 = 2
--and d.中文名 like'%环丙沙星%'
and c.结果类型 is NOT NULL
--and t.审核时间 between [0] and [1]
group by d.中文名
union all
--门诊
select d.中文名 as 抗生素,
count(distinct f.病人id || f.挂号单 || t.审核时间||c.结果类型) 总人数,
count(distinct decode(c.结果类型,
'S-敏感',
f.病人id || f.挂号单|| t.审核时间||c.结果类型)) 敏感,
count(distinct decode(c.结果类型, 'R-耐药', f.病人id || f.挂号单||审核时间||c.结果类型)) 耐药,
count(distinct decode(c.结果类型, 'I-中介', f.病人id || f.挂号单||审核时间||c.结果类型)) 中介,
count(distinct (case when c.结果类型 not in('S-敏感', 'R-耐药', 'I-中介') then f.病人id || f.挂号单||审核时间||c.结果类型 end)) 其他
from 检验报告细菌 b,
检验报告药敏 c,
检验报告记录 t,
检验药敏 d,
检验申请组合 e,
病人医嘱记录 f
where c.药敏id = d.id
and b.id = c.结果id
and b.标本id = t.id
and b.标本id = e.标本id
and e.医嘱id = f.id
and f.病人来源 = 1
--and d.中文名 like'%环丙沙星%'
and c.结果类型 is NOT NULL
--and t.审核时间 between [0] and [1]
group by d.中文名
) m group by m.抗生素