SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 665|回复: 0
打印 上一主题 下一主题

SQL问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-7-27 16:09:20 | 只看该作者

SQL问题

我有两个数据集
dataset1: key date1
dataset2: key date2 var

我想要合并数据集,使得date1=date2或者取date1之前最近的date2的数据

如:
dataset1
key date1
1  20050607
1  20071010
2  20040202
2  20050302

dataset2
key date2 var
1    20050607 0
1    20061231  1
1    20071223  1
2    20031201  3
2    20050201  4

结果为:
key date1    date2 var
1  20050607 20050607 0
1  20071010 20060631 1
2  20040202 20031201 3
2  20050302 20050201 4

我想出的办法是:
proc sql;
create table new as
select a.*, b.date2, b.var
from dataset1 as a left join dataset2 as b
on a.key=b.key and b.date2<=a.date2
order by key, date1, date2;
quit;
data new; set new; by key date1; if last.date1; run;

不过这种方法效率太差,我的数据量非常大,不知道有没有好的建议可以一步完成?谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 04:56 , Processed in 0.068833 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表