mybatis中根据同个字段的不同值分别查询统计本月的各个状态的数量

条件:doctorType 有 0 和 1。

目的:我想要分别统计医生类别为0和1的这五种状态

首先,先写出统计这五个状态的sql,你会发现结果是合在一起的,并没有拆分的。

SELECT DISTINCT
        COUNT(CASE WHEN c.consult_status = 2 THEN 1 ELSE NULL END) AS paid,
        COUNT(CASE WHEN c.consult_status = 3 THEN 1 ELSE NULL END) AS received,
        COUNT(CASE WHEN c.consult_status = 4 THEN 1 ELSE NULL END) AS unDiagnosis,
        COUNT(CASE WHEN c.consult_status = 5 THEN 1 ELSE NULL END) AS returned,
        COUNT(CASE WHEN c.consult_status = 6 THEN 1 ELSE NULL END) AS diagnosed
        FROM hz_consult_doctor doc
        LEFT JOIN hz_consult c ON (c.id = doc.consult_id)
        LEFT JOIN hz_hospital hos ON (doc.hospital_id = hos.hospital_id AND doc.is_delete = 0)
        LEFT JOIN hz_consult_patient p ON c.id = p.consult_id
        WHERE 
        c.is_cancel = 0 AND p.is_delete = 0 AND c.is_delete = 0 AND doc.is_delete = 0
		AND c.type = 0
		AND c.union_id = 130123
		AND hos.hospital_id = 1118011814561100810
		AND doc.doctor_id = 1318040811373003377
		AND DATE_FORMAT(c.commit_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

结果应该分别是doctorType为0的一次,为1的一次。所以这不是我们要的结果

现在只需把sql改成以doctorType来分组的就可以得到我们想要的结果。

sql如下:

SELECT DISTINCT doc.doctor_type,-- 这边加上这个为了区别
        COUNT(CASE WHEN c.consult_status = 2 THEN 1 ELSE NULL END) AS paid,
        COUNT(CASE WHEN c.consult_status = 3 THEN 1 ELSE NULL END) AS received,
        COUNT(CASE WHEN c.consult_status = 4 THEN 1 ELSE NULL END) AS unDiagnosis,
        COUNT(CASE WHEN c.consult_status = 5 THEN 1 ELSE NULL END) AS returned,
        COUNT(CASE WHEN c.consult_status = 6 THEN 1 ELSE NULL END) AS diagnosed
        FROM hz_consult_doctor doc
        LEFT JOIN hz_consult c ON (c.id = doc.consult_id)
        LEFT JOIN hz_hospital hos ON (doc.hospital_id = hos.hospital_id AND doc.is_delete = 0)
        LEFT JOIN hz_consult_patient p ON c.id = p.consult_id
        WHERE c.is_cancel = 0 AND p.is_delete = 0 AND c.is_delete = 0 AND doc.is_delete = 0
				AND c.type = 0
				AND c.union_id = 130123
				AND hos.hospital_id = 1118011814561100810
				AND doc.doctor_id = 1318040811373003377
				AND DATE_FORMAT(c.commit_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
				GROUP BY doc.doctor_type -- 以这个doctorType来分组,这样就能得到结果

结果如下:

这样就能区分doctorType的值分别显示什么

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值