全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3122 3
2013-07-03
悬赏 100 个论坛币 已解决
有一张主表,里面是股票每日的收盘价数据,日期都是交易日
还有一张副表,里面是股票每年的利润数据,日期是每季度的最后一个日历日,非交易日
现在要把副表连到主表上,要求是主表的每一行取到离该行日期最近的前一个利润数据(如果该行日期有对应的利润数据,则取该数据,否则取之前最近的数据)

我现在的做法是先把副表补充完整,然后用Sql的左连接,条件就是日期相符
但是补充副表的操作很费时费空间,问下有什么一次解决问题的好办法
发个悬赏吧,活跃下气氛

最佳答案

pobel 查看完整内容

是不是这个意思: proc sql; create table c as select a.*, b.date as b_date,b.othervar from a left join b on a.date>=b.date group by a.date,a.othervar having b.date=max(b.date) ; quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-7-3 14:54:10
是不是这个意思:
proc sql;
  create table c as
   select a.*, b.date as b_date,b.othervar
     from a left join b
           on a.date>=b.date
           group by a.date,a.othervar
     having b.date=max(b.date)
     ;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-3 15:14:52
你可以提供部分数据,这样大家就容易明白你所说的了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-3 21:30:18
pobel 发表于 2013-7-3 15:11
是不是这个意思:
proc sql;
  create table c as
嗯,就是像你这么写就对了
之前我还试过一下
好像group和having写倒了报错,然后就没试下去了
昨天突然又遇到这个问题
所以贴上来问问
多谢大侠了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群