2013-08-26 32 views
0

我的表有医生ID,访问ID(一个医生能有几个访问),并参观原因,它看起来像这样:如何根据t-sql中的条件对一列的值进行分组?

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 

在此先感谢!

回答

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 
0

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

相关问题