2014-07-08 2 views
0

마약 사용을 파악하기 위해 일련의 '카운트'를 SQL과 함께해야합니다. 다음의 간단한 (그리고 확률값 끔찍한 매크로) 작성 SQL/SAS하지만 필자 꽤 새로운 임 :SQL : 일련의 "카운트"결과를 테이블에 넣으려고 시도합니다.

 %macro rxs (title, data, zz); 
     Title &title &zz; 
     proc sql; 
      select count (studyid) as NumberofRxs from &data where zz=&zz; 
      select count (distinct studyid) as NUMofPATIENTS from &data where zz=&zz; 
      select count (studyid) as numRXswithSTATIN from &data where zz=&zz and exposed=1; 
      select count (distinct studyid) as numPATIENTSwithdrug from &data where zz=&zz and exposed=1; 
      select count (studyid) as numRXSnodrug from &data where zz=&zz and exppsed=0; 
      select count (distinct studyid) as numPATIENTSSnodrug from &data where zz=&zz and exposed=0; 
       quit; %mend rxs; 

결과가 나올 잘 ... 혼란의 그 조금. 내가 간단한 테이블 하나에 넣을 수 있다면 좋을 것이다. 내가 말했듯이, Im은 이것에 새로운 것이므로 솔루션은 매우 간단 할 것입니다.

도움 주셔서 감사합니다.

+0

어떤 DBMS를 사용하고 있습니까? –

답변

0

대신 그 다른 선택을 모두 가지고, 당신은 이런 식으로 그들을 결합 할 수 있습니다 : 나는 카운트 일부의 경우 문을 얼마나

select count (studyid) as NumberofRxs, 
     count (distinct studyid) as NUMofPATIENTS, 
     count (Case when exposed = 1 Then studyid Else null End) as numRXswithSTATIN, 
     count (distinct Case when exposed = 1 Then studyid Else null End) as numPATIENTSwithdrug, 
     count (Case when exposed = 0 Then studyid Else null End) as numRXSnodrug, 
     count (distinct Case when exposed = 0 Then studyid Else null End) as numPATIENTSSnodrug 

from &data where zz=&zz; 

공지 사항. Count는 null 값을 + 시합니다. 노출을 기반으로 한 studyid 만 계산하기 때문에 노출 된 경우 case 문은 잘못된 값을 반환합니다. 그런 다음 카운트를 무시합니다.

+0

감사합니다. 아마 그 일을하는 훨씬 간단한 방법이 있다고 생각했습니다! – Rainmaker

관련 문제