2013-01-02 5 views
1

안녕하세요 저는 테이블의 마지막 줄을 추출하는 다음 데이터 단계를 수행하고 있습니다. proc sql에서 어떻게 동일한 작업을 수행 할 수 있습니까? 마지막 행에 직접 액세스 할 수 있으면 훨씬 더 빠를 것으로 기대됩니다.SAS SQL에서 테이블의 마지막 행 가져 오기

data refTable; 
    set vhd(keep= v69c1ec v69dhec v69nbms fixing where=(fixing = 'continu')) end=eof; 
    if eof then output; 
    by v69dhec v69nbms; 
run; 

감사

답변

2

아니요, SQL에서는이 동작을 재현 할 수 없습니다. SQL에는 "행 순서"라는 자연스러운 의미가 없습니다. 테이블의 마지막 줄에 액세스하는 NOT입니다. 다음에 최종 한정 행 을 가져오고 WHERE 절을 적용합니다. 당신이을 포함하지 않는 경우

data refTable; 
    get_me = nobs; 
    set vhd(keep=v69c1ec v69dhec v69nbms fixing) point=get_me nobs=nobs; 
    output; 
    stop; 
run; 

공지 사항이 유일한 작품 : 당신이 정말 마지막 행을 얻는다면

, 훨씬 빠른 SAS 기술은 POINT=NOBS= 옵션 같은 것을 사용하는 것 WHERE 절!

+0

'proc sql' 명령문에서'firstobs'와'obs' 문을 데이터 세트 옵션으로 사용하면 어떨까요? 'proc sql'은 SAS 데이터 세트를 처리 할 때 이것을 존중합니까? 무시합니까? –

+0

@RobPenridge 그렇습니다.'FIRSTOBS ='와'OBS ='옵션은'PROC SQL' 처리 중에 받아 들여지지만 질문 된 질문과 관련이 없습니다. 또한, WHERE 절이있을 때 그들의 의미는 안개가 낀다. 나는 거의 어느 옵션을 사용하지도 않는다. – BellevueBob

+0

아 좋은 지적 - 원래 질문에서 where 절을 보지 못했습니다. 감사 –

1

는 지금까지 내가 아는 한, 당신은 직접 proc sql를 사용하여 마지막 행에 액세스 할 수 없습니다. 이 과정은 데이터를 정렬 한 다음 outobs = 1을 사용하여 첫 번째 행을 선택하는 것입니다.

이 질문 here은 SAS에서 마지막 행을 효율적으로 가져 오는 방법을 설명합니다. 기본적으로 SAS에 데이터 집합에있는 레코드 수를 묻고 바로 그 레코드로 건너 뜁니다.

관련 문제