2017-09-23 154 views
0

当我使用的情况时,声明是这样的:为什么CASE WHEN语句组类似的变量(SAS PROC SQL)

...

, case when majcat in (1,2,3,4,5) then "Inpatient" 
     when majcat in (3) then "IP-Surgical" 
     else "N/A" end as serv_cat 

服务器不保留住院和IP - 分开的手术将它们分组在一起。为什么会发生这种情况,我该如何解决?

这里是上下文的完整代码:

proc sql; 
create table raw_claims_summ as 
select pcp_npi 
     , pcp_name 
     , practice_name 
     , rpt_cut_1 
     , rpt_cut_2 
     , sum(paid) 
     , sum(admits) 
     , sum(days) 
     , sum(units) 
     , case when majcat in (1,2,3,4,5) then "Inpatient" 
      when majcat in (3) then "IP-Surgical" 
      else "N/A" end as serv_cat 
from raw_claims 
group by 1,2,3,4,5,10 
order by 1 
;quit; 
+1

你想为 “3” 是什么结果呢? –

+1

对于住院病人和IP外科手术,你想要2行majcat = 3吗? –

回答

3

你应该从第一when条款删除3:

CASE WHEN majcat IN (1, 2, 4, 5) THEN "Inpatient" 
    -- 3 removed here ---^ 
    WHEN majcat in (3) THEN "IP-Surgical" 
    ELSE "N/A" 
END AS serv_cat 
+0

为什么'当(3)'中的majcat而不是'当majcat = 3'时? – Sami

+4

@Sami我一直在保持OP的形式。使用'in'没有错,只是有点多余。你绝对可以使用'='来代替。 – Mureinik