2017-09-23 107 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