Sql 根据优先级选择日期范围

Sql 根据优先级选择日期范围,sql,sas,Sql,Sas,我面临着一个逻辑上的死胡同。想在论坛上发帖寻求帮助 我有以下数据集 data have1; input case action_in_date action_out_date priority; cards; 100 28-MAY-2015 29SEP2015 02 100 04-SEP-2015 27NOV2015 03 100 27-NOV-2015 17SEP2016 04 ; run; data have2; input case post_date amount; cards; 10

我面临着一个逻辑上的死胡同。想在论坛上发帖寻求帮助

我有以下数据集

data have1;
input case action_in_date action_out_date priority;
cards;
100 28-MAY-2015 29SEP2015 02
100 04-SEP-2015 27NOV2015 03
100 27-NOV-2015 17SEP2016 04
;
run;

data have2;
input case post_date amount;
cards;
100 18-SEP-2015 250
100 19-SEP-2015 100
100 30-NOV-2015 300
;
run;
现在,have2数据集中前两行(2015年9月18日和2015年9月19日)的发布日期在have1数据集中的两个日期范围之间。即。2015年5月28日至2015年9月29日,2015年9月4日至2015年11月27日。但我想把钱分配给最高优先权。2015年9月4日至2015年11月27日之间的ie,优先权为03。我正在寻找的输出如下

/产出/ 100 2015年9月4日2015年11月27日350 100 2015年11月27日2016年9月17日04 300 ;


非常感谢您的帮助。

这能解决您的问题吗?(不确定我是否完全理解这个问题)

proc sql;
create table allocation as
select b.case, a.action_in_date, a.action_out_date, a.priority, b.post_date, b.amount
from have1 a RIGHT JOIN have2 b
on a.case=b.case and a.action_in_date<=b.post_date<=a.action_out_date
group by b.case, b.post_date
having a.priority=max(a.priority);
quit;
data have1;
informat action_in_date date9. action_out_date date9.;
format action_in_date date9. action_out_date date9.;
input case action_in_date action_out_date priority;
cards;
100 28MAY2015 29SEP2015 02
100 04SEP2015 27NOV2015 03
100 27NOV2015 17SEP2016 04
;
run;

data have2;
informat post_date date9.;
format post_date date9.;
input case post_date amount;
cards;
100 18SEP2015 250
100 19SEP2015 100
100 30NOV2015 300
;
run;