以下是一个示例代码,它演示了如何按照每行的最近日期进行左连接的proc sql解决方案:
/* 创建示例数据集1 */
data dataset1;
input id date1;
format date1 date9.;
datalines;
1 01JAN2022
2 15FEB2022
3 10MAR2022
;
run;
/* 创建示例数据集2 */
data dataset2;
input id date2;
format date2 date9.;
datalines;
1 05JAN2022
2 20FEB2022
3 05MAR2022
;
run;
/* 按照每行的最近日期进行左连接 */
proc sql;
create table result as
select a.id, a.date1, b.date2
from dataset1 as a
left join dataset2 as b
on a.id = b.id
and b.date2 = (
select min(date2)
from dataset2
where id = a.id
and date2 >= a.date1
)
;
quit;
/* 打印结果 */
proc print data=result;
run;
在上面的示例代码中,首先创建了两个示例数据集dataset1和dataset2,它们分别包含id和date列。
然后,使用proc sql进行左连接操作,将dataset1和dataset2按照id进行连接。在连接的同时,使用子查询来找到每行最近的日期。子查询选择dataset2中满足以下条件的最小date2值:id等于a.id(外部查询中的id),且date2大于等于a.date1(外部查询中的date1)。
最后,将结果保存到名为result的数据集中,并使用proc print打印结果。
请注意,示例代码中的数据集名称、变量名称和日期格式可能需要根据实际情况进行调整。
上一篇:按照每行的行数递增,添加额外的行
下一篇:按照每X秒分组的TSQL