这语句如何优化
select r2.area_id, r2.org_name,r1.org_id,  sum( r1.高血压) 高血压,sum( r1.恶性肿瘤) 恶性肿瘤, sum(r1.糖尿病) 糖尿病,sum( r1.重性精神病) 重性精神病
   from (select case                 
                  when s1.org_id is null then
                   (case
                  when s2.org_id is null then
                   (case
                  when s3.org_id is null then
                   s4.org_id
                  else
                   s3.org_id
                end) else s2.org_id end) else s1.org_id                 
                end org_id,
                case
                  when 高血压 is null then
                   0
                  else
                   高血压
                end 高血压,
                case
                  when 恶性肿瘤 is null then
                   0
                  else
                   恶性肿瘤
                end 恶性肿瘤,
                case
                  when 糖尿病 is null then
                   0
                  else
                   糖尿病
                end 糖尿病,
                case
                  when 重性精神病 is null then
                   0
                  else
                   重性精神病
                end 重性精神病               
           from (select  t3.org_id,  count(t3.org_id) 高血压
                   from chronic_ehr t1, chronic_event t2, chronic_org t3
                  where t1.ssid = t2.ssid
                    and t1.event = t2.event
                    and t3.org_id = t2.org_id and (t1.catalog_code = '0510040001' or t1.catalog_code = '0510030001')
                      and t1.COMMIT_TIME between to_date('2011/1/1','yyyy-mm-dd') and to_date('2012/1/1','yyyy-mm-dd')  
                  group by t3.org_id                  
                 ) s1
           full join (select t3.org_id, count(t3.org_id) 恶性肿瘤
                       from chronic_ehr t1, chronic_event t2, chronic_org t3
                      where t1.ssid = t2.ssid
                        and t1.event = t2.event
                        and t3.org_id = t2.org_id
                        and (t1.catalog_code = '0510040005' or  t1.catalog_code = '0510030005') and t1.COMMIT_TIME between to_date('2011/1/1','yyyy-mm-dd') and to_date('2012/1/1','yyyy-mm-dd')  
                      group by t3.org_id                      
                     ) s2 on s1.org_id = s2.org_id
           full join (select t3.org_id, count(t3.org_id) 糖尿病
                       from chronic_ehr t1, chronic_event t2, chronic_org t3
                      where t1.ssid = t2.ssid
                        and t1.event = t2.event
                        and t3.org_id = t2.org_id
                        and (t1.catalog_code = '0510040002' or t1.catalog_code = '0510030002') and t1.COMMIT_TIME between to_date('2011/1/1','yyyy-mm-dd') and to_date('2012/1/1','yyyy-mm-dd')  
                      group by t3.org_id                      
                     ) s3 on s2.org_id = s3.org_id
           full join (select t3.org_id, count(t3.org_id) 重性精神病
                       from chronic_ehr t1, chronic_event t2, chronic_org t3
                      where t1.ssid = t2.ssid
                        and t1.event = t2.event
                        and t3.org_id = t2.org_id
                        and (t1.catalog_code = '0510030007' or t1.cat