문제

여러 개의 열이있는 테이블이 있습니다.이제 와 같은 연산자를 사용하여 병합하고 싶습니다. 내 코드는 다음과 같습니다

와 같습니다
proc sql;

    select a.*,b.*
    from tera.SFTP as a,home.SFTP_1 as b
    where a.zip_c like ('%b.zip_extract%')

;
quit;
.

Page Break 메시지를 얻고 결과가 리턴되지 않습니다. a.zip_c의 열 유형은 B.ZIP_EXTRACT의 char가 6 이하의 char와 길이가 50입니다.

도움이 되었습니까?

해결책

generacodicicetagcode에서 병합은 훌륭한 아이디어가 아닙니다.인덱스를 사용하지 않으므로 사용자가 얻는 최적화를 많이 사용하지 않습니다.그러나 때로는 필요합니다.

SAS의 경우, 나는 이것을 다르게 할 것입니다 [및 대부분의 다른 SQLS ...]

proc sql;

    select a.*,b.*
    from tera.SFTP as a,home.SFTP_1 as b
    where find(a.zip_c,b.zip_extract)
;

quit;
.

와 같은 것과 동일한 것을 수행하지만 SAS가 인덱스와 최적화를 사용하도록 허용 할 가능성이 더 큽니다.

가능한 열 길이 문제를 처리하려면 트림을 사용하십시오 :

data have_a;
 length zip_c $50;
 input @1 zip_c $50.;
 datalines;
12345 99999
67890 99999
88001 99999
37013 99999
60037 99999
;;;;
run;

data have_b;
 length zip_extract $7;
 input zip_extract $;
 datalines;
12345
37013
99998
;;;;
run;

proc sql;
  title "No Rows!";
    select a.*,b.*
    from have_a as a,have_b as b
    where find(a.zip_c,b.zip_extract)
;

quit;
proc sql;
  title "Rows!";
    select a.*,b.*
    from have_a as a,have_b as b
    where find(a.zip_c,trim(b.zip_extract))
;

quit;
.

다른 팁

문제는 문자열, b.zip_extract 열에 일치하는 것입니다.

시도 :

select a.*,b.*
from tera.SFTP as a,home.SFTP_1 as b
where a.zip_c like '%' || b.zip_extract || '%'
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top