sql语句有问题 求大神帮个忙,第一次遇到这个提示

说是除数为0了 应该要写case when 语句 可是我不知道怎么加进去……感觉头都晕了

select dept.SORT_ORDER,
       dept.id,
       dept.department_chinese_name,
       sum(a.rs) rs,
       sum(a.totaldays) totaldays,
       sum(a.avagdays) avagdays,
       sum(a.qty) qty,
       sum(a.dddvalue) dddvalue,
       ROUND(sum(a.dddvalue) / sum(a.totaldays) * 100, 2 ) ddd强度,
       SUM(a.tk) tk,
       round(sum(a.tk) / sum(a.totaldays) * 100, 2) tk强度
  from (select r.dept_id dept_id,
               count(r.id) rs,
               sum(CASE     WHEN    to_date(to_char(r.leave_dept_date, 'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss') -
                                    to_date(to_char(r.first_insection_date, 'yyyy-MM-dd hh24:mi:ss'),  'yyyy-MM-dd hh24:mi:ss') = 0 THEN  1   else
                                    to_date(to_char(r.leave_dept_date, 'yyyy-MM-dd hh24:mi:ss'),  'yyyy-MM-dd hh24:mi:ss') -
                                    to_date(to_char(r.first_insection_date, 'yyyy-MM-dd hh24:mi:ss'), 'yyyy-MM-dd hh24:mi:ss') end) totaldays,
               round(sum(CASE WHEN  to_date(to_char(r.leave_dept_date, 'yyyy-MM-dd hh24:mi:ss'), 'yyyy-MM-dd hh24:mi:ss') -
                                    to_date(to_char(r.first_insection_date, 'yyyy-MM-dd hh24:mi:ss'), 'yyyy-MM-dd hh24:mi:ss') = 0 THEN  1  else
                                    to_date(to_char(r.leave_dept_date, 'yyyy-MM-dd hh24:mi:ss'),  'yyyy-MM-dd hh24:mi:ss') -
                                    to_date(to_char(r.first_insection_date, 'yyyy-MM-dd hh24:mi:ss'),    'yyyy-MM-dd hh24:mi:ss')   end)
                                    / count(r.id)) avagdays,
               0 qty,
               0 dddvalue,
               0 tk
          from ipi_registration r
         where        r.leave_dept_date >= to_date('2018-01-01 00:00:00', 'yyyy-MM-dd hh24:mi:ss')           
                  and r.leave_dept_date <= to_date('2018-06-30 00:00:00', 'yyyy-MM-dd hh24:mi:ss')
                  and r.s_brztbh_dm <> '70'
        group by r.dept_id
        union ALL  ---------------
        select a.dept_id,
               0,
               0,
               0,
               sum(a.qty) qty,
               sum(a.dddvalue) dddvalue,
               SUM(a.tk) tk
          from (select h.ORDERED_DEPT_ID dept_id,
                       sum(d.total_qty) qty,
                       dd.id,
                       dd.ddd_value,
                       dd.single_dose_specification,
                       dd.pharmacy_dose_scale,
                       dd.ddd_convert_value,
                       dd.DDD_VALUE,
                       decode(dd.DDD_VALUE,0,null,(round(sum(d.total_qty) * dd.single_dose_specification *  
                       dd.pharmacy_dose_scale * DECODE(dd.ddd_convert_value, NULL,  1,  dd.ddd_convert_value)
                        / dd.DDD_VALUE,2))) dddvalue,
                       (CASE  WHEN dd.antibiotics_level = '20' THEN   (decode(dd.DDD_VALUE,0,null,
                       (round(sum(d.total_qty) * dd.single_dose_specification * dd.pharmacy_dose_scale
                        * DECODE(dd.ddd_convert_value, NULL,1, dd.ddd_convert_value) / dd.DDD_VALUE, 2))))   ELSE  NULL END) tk               
                  from ipi_registration r
                 inner join ipc_drug_presc_h h                    on r.id = h.ipi_registration_id
                 inner join ipc_drug_presc_d d                    on d.drug_presc_h_id = h.id
                 inner join drm_dictionary dd                     on dd.id = d.drug_id
                 where r.leave_dept_date >= to_date('2018-01-01 00:00:00', 'yyyy-MM-dd hh24:mi:ss')
                   and r.leave_dept_date <= to_date('2018-06-30 23:59:59', 'yyyy-MM-dd hh24:mi:ss')
                   and r.s_brztbh_dm <> '70'
                   and dd.antibiotics_level is not null
                   and dd.ddd_value is not null
          and dd.DRUG_COMMON_NAME not in ('复方磺胺甲恶唑片','注射用链霉素')
                 group by h.ORDERED_DEPT_ID,
                          dd.id,
                          dd.ddd_value,
                          dd.single_dose_specification,
                          dd.pharmacy_dose_scale,
                          dd.ddd_convert_value,
                          dd.DDD_VALUE,
                          dd.antibiotics_level) a
                           
                          
         group by a.dept_id) a
         
         
         
inner join hra00_department dept    on dept.id = a.dept_id
group by dept.SORT_ORDER,dept.id, dept.department_chinese_name
order by dept.SORT_ORDER,dept.department_chinese_name
  
FineReport13683486995 发布于 2018-7-11 11:28
悬赏:2 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
夜梦碎发布于2018-7-11 11:28(编辑于 2023-9-6 09:34)
555
最佳回答
0
Paul_yau发布于2018-7-11 11:43(编辑于 2023-9-6 09:34)
555
最佳回答
0
zhanghs1981发布于2018-7-11 11:45(编辑于 2023-9-6 09:34)
555
最佳回答
0
No1-格调发布于2018-7-11 12:31(编辑于 2023-9-6 09:34)
555
  • 0关注人数
  • 470浏览人数
  • 最后回答于:2018-7-11 14:42
    活动推荐 更多
    热门课程 更多
    返回顶部