全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3152 5
2014-05-02
悬赏 10 个论坛币 已解决

数据集a   股票市场数据
code          qdate                 qtime                                    price
000001     2005-09-09       09SEP2005:09:49:27           ...
000001     2005-09-09       09SEP2005:09:59:27           ...
000001     2005-09-10        .......
000001     2005-09-10       ........
000001     2005-09-11        ........
...
000001



数据集b   股票除息日数据
code           exdt
000001     2005-09-10
000001     2005-10-12
000002     2006-02-03
.........

我需要剔除每个除息日前后3天的股票市场数据
我是这么做的,出错了
我对数据集进行了如下操作,变成了数据集c

code           exdt                  downdate         update
000001     2005-09-10        2005-09-07     2005-09-13
000001     2005-10-12        2005-10-09     2005-10-15
000002     2006-02-03        2006-01-31     2006-02-06
.........


复制代码
提示的错误是子查询求值不止一行。
求助应该怎么实现?





最佳答案

二维码

扫码加我 拉你入群

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

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

全部回复
2014-5-2 14:17:22
复制代码
二维码

扫码加我 拉你入群

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

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

2014-5-2 14:53:09
是我表述的不清晰吗?我需要剔除数据集a里日期在数据集b日期exdt前后3天的数据
二维码

扫码加我 拉你入群

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

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

2014-5-2 15:00:06
你sql里的问题比较多,究其原因,还是没有把所有的key匹配上。
另外,金融市场的时间都是按照特殊的金融日历算的,一般每年末专门的部门会生成下一年的交易日日历。所以,不能按照正常的加减。不过,因为你是历史分析,所以直接在元数据表中找就行了。

二维码

扫码加我 拉你入群

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

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

2014-5-2 15:26:16
jeozu 发表于 2014-5-2 15:00
你sql里的问题比较多,究其原因,还是没有把所有的key匹配上。
另外,金融市场的时间都是按照特殊的金融日 ...
当看到大神连用三个连接后,我泪流满面了,回去仔细研究去。。。。
二维码

扫码加我 拉你入群

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

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

2014-5-2 15:39:18
congmu 发表于 2014-5-2 15:26
当看到大神连用三个连接后,我泪流满面了,回去仔细研究去。。。。
把sub-query当成临时表就行了,直接替换。如果与数据库打交道,一般没有权限生成新表,所以只能多用sub-query,20多个近3000行的单个sql也写过~~. 不能建临时表很多时候影响效率。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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