case when else语句的使用
/* 产销机构 行政村 高病累计患者建党数 高病本月管理数(一年一次服务) 高病本月规范管理数(一年四次随访) 高病本月体验人数 高病累计体检人数
糖病本月新增患者建党数 糖病累计患者建党数 糖尿病本月管理数 糖尿病本月规范管理数 糖尿病本月体检人数 糖尿病累计体检人数 www.2cto.com
*/
/*case when else语法要点说明如下:
1、以CASE开头,以END结尾
2、分支中WHEN 后跟条件,THEN为显示结果
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
4、END 后跟别名
*/ select * from(
select jg.简称 as 机构,
jwh.名称 as 行政村,
count(distinct case when rqfl.id = '34F596B0-03CE-4E51-B6B3-A4927B92AE87' then grza.个人id
end) as 高病累计患者建党数,
count(distinct case
when rqfl.id = '7553A063-99F8-4DB9-BDAC-D21C8BBDB243' then grza.个人id
end) as 糖病累计患者建档数,
count(distinct case
when fwxmml.id = '667C2146-BA8C-4937-9ACC-A7D8DB6C2712' and fwhdjl.登记时间 >=to_date('2012-03-01', 'yyyy-mm-dd')
and fwhdjl.登记时间 <= to_date('2012-03-01','yyyy-mm-dd')
then fwhdjl.个人id end) as 高病本月规范管理数,
count(distinct case
when fwxmml.id = 'AC955B0F-E396-4ED6-998D-3746F91EDB8B' and fwhdjl.登记时间 >=to_date('2011-03-01', 'yyyy-mm-dd') www.2cto.com
and fwhdjl.登记时间 <= to_date('2012-03-01','yyyy-mm-dd')
then fwhdjl.个人id end) as 糖尿病本月规范管理数 ,
count(distinct case when fwxmml.id='67F5D7FA-D7C2-4244-B9DB-FC34A8E96C57' and fwhdjl.登记时间>=to_date('2012-03-01','yyyy-mm-dd')
and fwhdjl.登记时间 <= to_date('2012-03-01', 'yyyy-mm-dd') then fwhdjl.个人id end ) as 高血压随访人数
count(distinct case when fwxmml.id='AC955B0F-E396-4ED6-998D-3746F91EDB8B' and fwhdjl.登记时间>=to_date('2012-03-01','yyyy-mm-dd')
and fwhdjl.登记时间 <= to_date('2012-03-01', 'yyyy-mm-dd') then fwhdjl.个人id end ) as 糖尿病随访人数
from 个人信息 gr,
机构 jg,
居委会 jwh,
个人专案 grza,
人群分类 rqfl,
服务活动记录 fwhdjl,
服务项目目录 fwxmml
where gr.当前机构id = jg.资源id
And gr.居委会id = jwh.id
And grza.个人id = gr.id
And grza.人群id = rqfl.id
And fwhdjl.个人id = gr.id
And fwhdjl.项目id = fwxmml.id
group by jg.简称, jwh.名称
) where 高血压随访人数>4 and 糖尿病随访人数>4
/*求当前机构下姓名和高血压随访人数的总人数*/
select count(1) www.2cto.com
from (
select gr.姓名, count(1) 高血压随访人数
from 个人信息 gr,
机构 jg,
服务活动记录 fwhdjl,
服务项目目录 fwhdxmml where gr.当前机构id = jg.资源id
and fwhdjl.个人id = gr.id
and fwhdjl.项目id = fwhdxmml.id
and fwhdxmml.名称 = '高血压随访'
and fwhdjl.登记时间 >= to_date('2011-03-01', 'yyyy-mm-dd')
and fwhdjl.登记时间 <= to_date('2012-03-01', 'yyyy-mm-dd')
group by gr.姓名)
where 高血压随访人数 >= 4
作者 Zhangyujie
case when else语句的使用