SAS中文论坛

标题: 非常规跨表查询,求助. [打印本页]

作者: shiyiming    时间: 2013-4-10 15:43
标题: 非常规跨表查询,求助.
两个表city, customer

[b:3czjas30]CITY[/b:3czjas30]
No        CITY
1        SHANGHAI
2        BEIJING
3        SHENZHEN
4        GUANGZHOU
5        HANGZHOU

[b:3czjas30]CUSTOMER[/b:3czjas30]
Cust_id        Address
1        #3523420 SHANGHAI
2        234hkjhad asdf SHANGHAI
3        #4390523 dfklj GUANGZHOU asdfkasdf
4        #435 HANGZHOU 34523
5        #345934 dsfkjlg


现在的问题是,我要再customer表里面增加一个新的列,城市.
也就是说扫描address,然后如果里面的值和城市表的城市值一样,就提取这个城市的名字.

求助...
作者: shiyiming    时间: 2013-6-1 09:05
标题: Re: 非常规跨表查询,求助.
[code:2j9epq8g]proc sql noprint;
  select count(*) into :cnt
  from city;
quit;

data _null_;
call symput ('cnt', strip(put(&cnt0,8.)));
run;

proc sql noprint;
  select city into :var1 - :var&cnt
  from city;
quit;

%macro mylist;
%do i=1 %to &cnt;
"&&var&i"
%end;
%mend;


data NEW_CUSTOMER;
length CITY $20.;
  set CUSTOMER;
  array test[&cnt] $20  _TEMPORARY_ (%mylist) ;
  do i=1 to &cnt;
  if index(address,strip(test(i)))>0 then city=test(i);
  end;
  drop i;
run;[/code:2j9epq8g]




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2