2014-03-26 2 views
1
나는 데이터 집합 A를 있다고 가정

: 내가 가진 geogkeys 세 가지 기록 각을 얻을 그래서이 두 데이터 세트를 병합하려면 어떻게병합 데이터 세트

ID Temp Date 
1 95 1 
1 100 2 
1 105 3 
2 10 1 

:

ID Geogkey 
1 A 
1 B 
1 C 
2 W 
2 R 
2 S 

다른 데이터 세트 B를 id = 1이고 geogkeys에 대한 각각의 레코드는 id = 2일까요? 당신이 직교을 원하는 가정

+0

그래서 1/A/95/1 1/A/100/2 1/A/105/3 1/B/95/1 1/B/100/2 등을 원하십니까? – Joe

+0

@Joe Right thats correct – lord12

답변

2

가 너무 큰 아니라면 당신은 SQL에서 그렇게 떨어져 최고 가입 :

proc sql; 
create table C as 
    select * from A,B 
    where A.ID=B.ID 
; 
quit; 

셀렉트 * ID를 변수를 덮어 쓰는 것을 경고를 생성합니다; 그게 걱정된다면 선택 (select A.ID, A.Geogkey, B.Temp, B.date)을 명기하십시오.

+0

단일 병합 성명으로이 작업을 수행 할 수 있습니까? 나는 SQL이 병합보다 덜 효율적이라는 것을 알고있다. – lord12

+1

반드시 정확하지는 않습니다. 이 경우 SQL은 데이터가 너무 많지 않으면 효율적일 수 있습니다. 병합은 이와 같은 데카르트 조인을 처리 할 수 ​​없습니다. 프로그램하기가 더 복잡한 키 설정 문을 사용해야합니다. 데이터를 처리 할 수 ​​없다는 것을 알지 않는 한 SQL을 사용합니다. – Joe

+1

아닙니다. 데이터 단계에서이 작업을 수행 할 수 있지만 행을 루핑하여 수행합니다. 'proc sql' 해결책을 고수하십시오. –

관련 문제