根据日期范围加入两个数据集

Joining two dataset based on date range

知道怎么做吗?

您也可以在 JOIN 子句上使用 <=>= 运算符。您的查询可能如下所示:

SELECT * 
FROM table_a as a
INNER JOIN table_b as b
  ON a.id=b.id 
  AND b.date >= a.date-5 
  AND b.date <= a.date+5

使用 BETWEEN 运算符。

  proc sql;
    create table want as
    select *
    from have1 t1 inner join have2 t2
        on t1.id = t2.id 
        and t2.date BETWEEN t1.date-5 AND t1.date+5
        ;
    quit;

示例数据:

data have1;
infile datalines4 delimiter="|";
input id date :date9.;
format date date9.;
datalines4;
1|15DEC2021
2|12NOV2020
3|10JAN2019
;;;;

data have2;
infile datalines4 delimiter="|";
input id date :date9.;
format date date9.;
datalines4;
1|20DEC2021
2|16NOV2020
3|19JAN2019
;;;;

proc sql;
create table want as
select t1.id
from have1 t1 inner join have2 t2
    on t1.id = t2.id 
    and t2.date BETWEEN t1.date-5 AND t1.date+5
    ;
quit;

Result:
   id 
   1
   2