두 데이터 세트의 변수를 합친 다음 합치면됩니다. 하나의 SQL 문에서이 작업을 수행하려고합니다. 그러나 일대 다 조인입니다. SELECT 문을 사용하여 더 나은 설명이 없기 때문에 요약 변수를 만들 수 있는지 배우는 데 관심이 있습니다.Proc SQL을 사용하여 요약 변수 만들기
INTERVAL에 이름/날짜 당 하나의 레코드 만 있기 때문에 아래 코드는 HOURS에 대한 요약 변수를 잘못 계산하지만 DETAIL에 이름/날짜 당 여러 레코드가 있기 때문에 잘못 계산됩니다.
이 작업을 수행하기 위해 여러 단계를 작성할 수 있지만 한 SQL 단계에서 수행 할 수 있는지 확인하고 싶습니다. 감사합니다
샘플 코드 :이 작동 너무 비효율적 안
data Detail;
Length Name CallType $25;
input date mmddyy10. name $ calltype $ count;
Format date mmddyy10.;
datalines;
05/01/2014 John Order 5
05/01/2014 John Complaint 6
05/01/2014 Mary Order 7
05/01/2014 Mary Complaint 8
05/01/2014 Joe Order 4
05/01/2014 Joe Complaint 2
05/01/2014 Joe Internal 2
05/02/2014 John Order 6
05/02/2014 John Complaint 4
05/02/2014 Mary Order 9
05/02/2014 Mary Complaint 7
05/02/2014 Joe Order 3
05/02/2014 Joe Complaint 1
05/02/2014 Joe Internal 3
;
data Interval;
Length Name $25;
input date mmddyy10. name $ hours;
Format date mmddyy10.;
datalines;
05/01/2014 John 8
05/01/2014 Mary 6
05/01/2014 Joe 4
05/02/2014 John 8
05/02/2014 Mary 6
05/02/2014 Joe 4
;
PROC SQL noprint feedback;
CREATE TABLE SUMMARY AS
SELECT
D.Name
, Sum(D.Count) as Count
, Sum(I.Hours) as Hours
FROM Detail D, Interval I
WHERE D.Name=I.Name and D.Date=I.Date
GROUP BY D.Name
ORDER BY D.Name;
QUIT;
감사합니다. 디버깅하기가 쉽기 때문에? 코드가 더 깨끗합니까? 아니면 당신이 더 효율적이라고 생각합니까? –
그래서 외부 FROM 문에서 조인을하지 않습니까? –
GROUP BY 문에 오타가 있습니까? –