로그인   |  회원가입  |  사이트맵  |  Contact Us
  아이디 저장하기
 
홈 > SAS Tech & Tip > SAS Programming 활용하기
[SAS 프로그래밍] 다른 테이블 활용하여 데이터 수정하기 2017.11.20
MYSAS 시샵 94 0
http://www.mysas.co.kr/sas_tiptech/a_question.asp?b_no=7529&cmd=content&bd_no=5

[SAS 프로그래밍] 다른 테이블 활용하여 데이터 수정하기

 

 

 안녕하세요^^

 

이번 시간에는 다른 테이블의 정보를 활용하여 기존 테이블의 값을 업데이트 하는 방법에 대해 알아보도록 하겠습니다.

 


 

 

▶ 예제데이터

먼저 예제 데이터로 사용할 데이터 셋은 아래와 같습니다. SASUSER의 데이터 salcomps newsals를 사용하였습니다.

 

 

 

 

 • 왼쪽의 데이터 old_sal에는 사원들의 정보와 기존에 받던 급여(salary)가 저장되어 있고,

   ​오른쪽의 new_sal데이터에는 사원들의 새로 업데이트된 급여가 저장되어 있습니다.

 





DATA STEP 사용하기

 

 

  coding

 

• 먼저 각각의 데이터셋을 기준 변수인 사원ID(empID)로 정렬하고 old_sort new_sort로 저장하였습니다

• 다음으로 merge문을 사용하여 기존 데이터(old_sort)의 급여항목을 제외한 다른 정보들과

   새로운 데이터(new_sort)의 바뀐 급여항목을 empID를 기준으로 병합하였습니다.

• 각 데이터들은 기존에 있던 사원들에 대해서만 업데이트를 하도록 if문과 in옵션을 사용하였습니다.

 

 ▷결과

오른쪽에 보이는 바와 같이 기존 사원들의 정보는 그대로 유지한 채 급여항목만 업데이트 된 것을 확인할 수 있었습니다.

 

 






PROC SQL 사용하기 : 기존 테이블에 덮어쓰기

 

 

coding 

 

update문을 사용하여 어떤 데이터 셋의 정보를 업데이트 할지 지정해 주었습니다.

set문 안의 where문을 통해 기존의 empID와 새로운 데이터의 empID가 같은 경우에만 업데이트가 되도록 지정을 해 준 다음,

• 새로운 데이터(new_sal)로부터 가져온 새급여 변수(newsalary)를 기존의 급여 변수인 salary에 저장되도록 하였습니다.

 

• 마지막으로 위의 업데이트 내용이 모두 반영이 된 데이터에서 출력할 변수들을 select 문에 써주어 출력합니다.

 

 ▷결과

• 결과는 오른쪽에 보이는 바와 같이 급여항목이 업데이트 된 것을 확인할 수 있습니다.

• 하지만 이 방법은 기존에 있던 old_sal데이터 셋에 새로운 정보만 덮어 씌워진 것으로,

   ​기존 데이터 파일이 없어지게 되므로 주의하여 사용해야 합니다.

 

 






PROC SQL 사용하기 : 새로운 테이블로 생성하기

 

 

  coding

 

• 위에서 사용한 SQL방법과 다르게, 정보를 덮어 씌우지 않고 새로운 테이블로 저장하는 방법입니다.

 

create table 을 사용하여 새로 만들 테이블 이름(updatetable)을 지정해 줍니다 

• 새로 만든 테이블(updatetable)에는 old_sal에 있는 모든 변수를 그대로 가져오도록 select*을 입력하였습니다.

• 그 다음 update문부터는 위에서 설명한 방법과 같은데,

  old_sal을 그대로 사용하지 않고updatetable을 사용하는 부분만 다릅니다.

 

 ▷결과

• 위에서 출력된 결과와 결과는 같지만 새로운 데이터 셋 updatetable이 생성되어 저장되는 부분이 다릅니다.

• 따라서 기존의 old_sal 데이터 셋은 그대로 보존할 수 있습니다.

 

 



[출처]

http://support.sas.com/documentation/cdl/en/sqlproc/63043/HTML/default/viewer.htm#p0z9p6hclwnhxin1mrewxhdz5f26.htm