不恼虎 2021-12-24 20:28 采纳率: 100%
浏览 25
已结题

相同年月日的两条数据,只能统计为一次

select
to_char(d.c_ss_date,'yyyy-mm-dd') 手术日期,
(case when d.c_ss_type in ('1','手术') then 1 else 0 end) 手术台次,
(case when d.c_ss_type in ('2','治疗性操作') then 1 else 0 end) 治疗性操作台次,
(case when d.c_ss_type in ('3','诊断性操作') then 1 else 0 end) 诊断性操作台次,
(case when d.c_ss_type in ('4','介入治疗') then 1 else 0 end) 介入治疗台次,
(case when d.c_ss_type in ('5','微创手术') then 1 else 0 end) 微创手术台次
from
MR_SY_MAIN B,MR_SY_MAIN_ZYXX C,MR_SY_SSXX D
where c.c_reg_id=d.c_bill_id
and b.c_reg_id=c.c_reg_id
and b.c_reg_id=d.c_bill_id
--and b.c_zyh='2119283'
and B.C_CHECKED >= 2
and c.c_out_date>=to_date('2021-11-01 00:00:00','yyyy-mm-dd hh24:mi:ss')
and c.c_out_date<=to_date('2021-11-30 23:59:59','yyyy-mm-dd hh24:mi:ss')
--and c.c_out_dept='61' --出院科室泌尿外科
and b.c_zyh='2119283'
group by to_char(d.c_ss_date,'yyyy-mm-dd'),d.c_ss_type

img

img

  • 写回答

3条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2021-12-24 20:57
    关注

    首先楼上说的distinct 应该不符合所有场景,从这个结构上来看,会有其他列数据不一样但日期一样的情况。
    理论上来说,这玩意不应该直接求和,算2台么?表关联有问题导致有笛卡尔积数据重复?
    如果关联有问题就先解决关联问题;
    如果确定关联没问题,那就改成下面这样

    select
    to_char(d.c_ss_date,'yyyy-mm-dd') 手术日期,
    sum(case when d.c_ss_type in ('1','手术') then 1 else 0 end) 手术台次,
    sum(case when d.c_ss_type in ('2','治疗性操作') then 1 else 0 end) 治疗性操作台次,
    sum(case when d.c_ss_type in ('3','诊断性操作') then 1 else 0 end) 诊断性操作台次,
    sum(case when d.c_ss_type in ('4','介入治疗') then 1 else 0 end) 介入治疗台次,
    sum(case when d.c_ss_type in ('5','微创手术') then 1 else 0 end) 微创手术台次
    from
    MR_SY_MAIN B,MR_SY_MAIN_ZYXX C,MR_SY_SSXX D
    where c.c_reg_id=d.c_bill_id
    and b.c_reg_id=c.c_reg_id
    and b.c_reg_id=d.c_bill_id
    --and b.c_zyh='2119283'
    and B.C_CHECKED >= 2
    and c.c_out_date>=to_date('2021-11-01 00:00:00','yyyy-mm-dd hh24:mi:ss')
    and c.c_out_date<=to_date('2021-11-30 23:59:59','yyyy-mm-dd hh24:mi:ss')
    --and c.c_out_dept='61' --出院科室泌尿外科
    and b.c_zyh='2119283'
    group by to_char(d.c_ss_date,'yyyy-mm-dd')
    

    如果你确定无论关联出来多少台都只算1台的话,那就再对这些求和字段再写个case when ,大于0台算1台,否则为0台

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月1日
  • 已采纳回答 12月24日
  • 创建了问题 12月24日

悬赏问题

  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
  • ¥15 Python报错怎么解决
  • ¥15 simulink如何调用DLL文件
  • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
  • ¥30 线性代数的问题,我真的忘了线代的知识了