【问题标题】:How to group values of one column based on condition in t-sql?如何根据t-sql中的条件对一列的值进行分组?
【发布时间】:2013-08-26 10:06:59
【问题描述】:

我的表有医生ID、就诊ID(一个医生可以多次就诊)和就诊原因,看起来是这样的:

doctor_uid | visit_uid | visit_cause
11-11-11    22-22-11      1
22-22-22    44-44-22      2
11-11-11    23-23-23      1

我需要根据visit_cause(应该等于'1')计算每位医生的所有就诊次数。在我计算每个医生的所有访问次数之前,没有visit_cause 的条件,我的查询中也必须有这个:

SELECT 
   v.vra_uid, 
   COUNT(v.visit_uid) OVER (PARTITION BY v.vra_uid) AS number_of_visits
FROM visits v 

返回:

doctor_uid | number_of_visits 
    11-11-11    2     
    22-22-22    1     

我如何计算每个医生都有visit_cause = '1' 的访问次数?所以它看起来像:

    doctor_uid | number_of_visits | visits_with_cause_equal_1
    11-22-33    2                           2
    22-22-22    1                           0

提前致谢!

【问题讨论】:

    标签: sql sql-server tsql count group-by


    【解决方案1】:

    这应该可行:

    select v.vra_uid, COUNT(v.visit_uid) as number_of_visits , SUM(case when v.visit_cause = 1 then 1 else 0 end) as visits_with_cause_equal_1
    from visits v 
    group by v.vra_uid
    

    【讨论】:

      【解决方案2】:

      你试过CASE WHEN visit_cause = '1' THEN COUNT(*)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-13
        • 2020-10-22
        • 2020-04-09
        • 2023-01-18
        • 2020-03-22
        • 2019-07-10
        相关资源
        最近更新 更多