2017-09-23 3 views
0

Quand je me sers d'un cas où la déclaration comme ceci:pourquoi est-CASE WHEN variables similaires groupe d'instructions (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 

le serveur ne tient pas Inpatient et IP -Surgical séparé il les regroupe. Pourquoi cela se passe-t-il et comment puis-je le réparer?

Voici le code complet pour le contexte:

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

Quel est le résultat que vous voulez pour "3"? –

+1

Voulez-vous avoir 2 lignes pour majcat = 3, pour les patients hospitalisés et IP-chirurgical? –

Répondre

3

Vous devez supprimer 3 de la première clause when:

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

Pourquoi 'QUAND majcat dans (3)' au lieu de 'WHEN majcat = 3'? – Sami

+4

@Sami Je gardais la forme d'OP. Utiliser 'in' n'est pas faux, c'est juste un peu redondant. Vous pouvez certainement utiliser '=' à la place. – Mureinik