2014-09-04 4 views
0

SAS에서 전체 외부 조인에 문제가 있습니다. 두 개의 데이터베이스에 가입하고 싶습니다. A는 환자 ID, 성별, 인종, blablabla ...을 포함하는 "엄마"이지만 상태 변수는 없습니다. B는 ID와 상태 만 포함하는 B입니다. 그래서 A는 실제로 B보다 더 큰 방법 데이터베이스이며, 내가 할거야 것은 A.로 상태 여기에 내 코드의 포함 B를 넣어하는 것입니다 : 내가 가진SAS SQL JOIN은 일치하는 행 대신 행을 늘립니다.

proc sql; 
CREATE TABLE C AS 
select * 
from A full outer join B 
on A.id=B.id ; 
RUN; 

결과는 실제로 두 개의 데이터베이스를 병합되지 않습니다. 대신에 데이터베이스 C를 얻었는데, A의 모든 데이터 (상태 변수는 null)와 A 다음의 데이터 B (상태 변수는 있지만 다른 모든 변수는 Null을 표시합니다). 따라서, 내가 한 것은 행을 추가하는 것입니다 ....

내 코드의 일부 조건은 다음과 같습니다. 1. University Edition 을 사용합니다. 2. ID의 형식은 실제로 Char입니다. B의 ID (예 : BD123)부터 A의 숫자 변수 ID를 char 변수로 변환합니다.

아무도 나를 도와 줄 수 없습니까? - D

답변

0

전체 연결 (A 행 100 행, B 행 15 행, C 행 115 행)을 변환 한 경우 ID 변수 형식을 올바르게 일치시키지 않았을 가능성이 큽니다. 추가 공백 또는 그 효과가있는 문제가있을 수 있습니다 (B.id 길이는 A.id과 일치하지 않을 수 있음). 가능하다면 ID를 숫자로 변환하거나 문자로 더 조심스럽게 변환하십시오.

둘째, A의 행 수를 얻으려는 경우 (A에 B 정보를 추가하기 만하면) left joinfull outer join이 아니게됩니다.

+0

안녕 조. 회신 해 주셔서 감사합니다. 이것은 내가 원래 생각했던 것보다 조금 더 복잡합니다 0.0. ID가 Char 일 때 그 이유는 sample_ID와 ppl이라는 이름의 다른 열이 sample_ID와 함께 ID와 함께 있다는 것입니다. 먼저 구분할 필요가 있습니다. – shakedong93

0

왼쪽 가입을 보았을 수도 있습니다.

proc sql; 
    create table C as 
    select A.*, B.* 
    from A left join B 
    on A.ID=B.ID; 
quit; 
관련 문제