张宇洁 发表于 2012-10-24 23:24:29

case when else

/*    产销机构 行政村   高病累计患者建党数   高病本月管理数(一年一次服务)   高病本月规范管理数(一年四次随访)    高病本月体验人数高病累计体检人数
                     糖病本月新增患者建党数糖病累计患者建党数   糖尿病本月管理数   糖尿病本月规范管理数   糖尿病本月体检人数   糖尿病累计体检人数   
    */
/*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' thengrza.个人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('2011-03-01', 'yyyy-mm-dd')
                                                                        andfwhdjl.登记时间 =to_date('2012-03-01','yyyy-mm-dd')
                                                 and fwhdjl.登记时间 =to_date('2012-03-01','yyyy-mm-dd')
                                                 and fwhdjl.登记时间 4 and 糖尿病随访人数>4
      /*求当前机构下姓名和高血压随访人数的总人数*/
            select count(1)
                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.登记时间 = 4
页: [1]
查看完整版本: case when else