EA 发帖数: 3965 | 1 我有两组数据,
数据1
ID in_date
1 2/1/2000
1 3/1/2001
1 5/1/2005
数据2
ID start_dt end_dt type
1 12/30/1999 2/22/2000 I
1 5/2/2005 5/3/2005 O
我想得到数据3
ID in_date start_dt end_dt type
1 2/1/2000 12/30/1999 2/22/2000 I
1 3/1/2001
1 5/1/2005
基本上就是如果in_date在start_dt和end_dt之间就把他选上。问题是着是many to
many的merge,数据很大,怎么做比较有效呢? |
s******r 发帖数: 1524 | 2 proc sql;
select a.id, a.start_dt,b.in_date, a.end_dt, a.type
from a inner join b
on a.id=b.id and b.in_date between a.start_dt and a.end_dt;
quit;run;
baozi please;run;
【在 EA 的大作中提到】 : 我有两组数据, : 数据1 : ID in_date : 1 2/1/2000 : 1 3/1/2001 : 1 5/1/2005 : 数据2 : ID start_dt end_dt type : 1 12/30/1999 2/22/2000 I : 1 5/2/2005 5/3/2005 O
|
h********o 发帖数: 103 | 3 Is this what you want?
==================================
PROC SQL;
CREATE TABLE THREE AS
SELECT A.ID, IN_DATE, START_DT, END_DT, TYPE
FROM ONE AS A LEFT JOIN TWO AS B
ON A.ID = B.ID AND IN_DATE BETWEEN START_DT AND END_DT;
QUIT; |
EA 发帖数: 3965 | 4 谢谢楼上的同学。发包子。做了一半,那另一半呢?我需要保留另外两个不在范围里的
数据啊。 |
l***a 发帖数: 12410 | 5 第二个不是改成left join了吗
【在 EA 的大作中提到】 : 谢谢楼上的同学。发包子。做了一半,那另一半呢?我需要保留另外两个不在范围里的 : 数据啊。
|
EA 发帖数: 3965 | |