不恼虎 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 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 使用Java milo连接Kepserver服务端报错?
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?
  • ¥20 软件开发方法学习来了
  • ¥15 微信小程序商城如何实现多商户收款 平台分润抽成
  • ¥15 HC32L176调试了一个通过TIMER5+DMA驱动WS2812B
  • ¥15 cocos的js代码调用wx.createUseInfoButton问题!
  • ¥15 关于自相关函数法和周期图法实现对随机信号的功率谱估计的matlab程序运行的问题,请各位专家解答!