楼主: playmore
2888 3

[有偿编程] 问一个关于时间匹配的Sql连接问题 [推广有奖]

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16309 个
通用积分
7.1397
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1331 小时
注册时间
2007-1-11
最后登录
2023-12-15

初级学术勋章 初级热心勋章 中级热心勋章

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;
关键词:sql 解决问题 最后一个 交易日 收盘价 交易日 收盘价 空间 日历

本帖被以下文库推荐

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛
沙发
pobel 在职认证  发表于 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;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
playmore + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

和谐拯救危机

使用道具

藤椅
lutian08 发表于 2013-7-3 15:14:52 |只看作者 |坛友微信交流群
你可以提供部分数据,这样大家就容易明白你所说的了

使用道具

板凳
playmore 发表于 2013-7-3 21:30:18 |只看作者 |坛友微信交流群
pobel 发表于 2013-7-3 15:11
是不是这个意思:
proc sql;
  create table c as
嗯,就是像你这么写就对了
之前我还试过一下
好像group和having写倒了报错,然后就没试下去了
昨天突然又遇到这个问题
所以贴上来问问
多谢大侠了
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 21:24