- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 14 个
- 通用积分
- 0.4174
- 学术水平
- 20 点
- 热心指数
- 26 点
- 信用等级
- 12 点
- 经验
- 17989 点
- 帖子
- 478
- 精华
- 0
- 在线时间
- 1627 小时
- 注册时间
- 2011-2-24
- 最后登录
- 2025-8-3
|
|
- data data1;
- input kind$ id$;
- cards;
- a 1
- a 2
- b 1
- b 3
- c 2
- c 3
- ;
- run;
- data data2;
- input id$ amt;
- cards;
- 1 50
- 2 40
- 2 30
- 3 30
- ;
- run;
- /*sql*/
- proc sql;
- create table result as
- select distinct a.kind,sum(amt) as sum_amt
- from data1 a join data2 b
- on a.id=b.id
- group by 1
- order by 1
- ;
- quit;
- /*hash---9.2下*/
- data result333222;
- if 0 then set data2;
- if _n_=1 then do;
- declare hash h(dataset:'data2',multidata:'y');
- h.definekey('id');
- h.definedata('amt');
- h.definedone();
- end;
- total=0;
- do _n_=1 by 1 until(last.kind);
- set data1;
- by kind;
- if h.find()=0 then do;
- total+amt;
- h.has_next(result:r);
- do while(r ne 0);
- h.find_next();
- total+amt;
- h.has_next(result:r);
- end;
- end;
- if last.kind then output;
- end;
- run;
-
-
复制代码
|
|