1, 2个表:A,B,各自有一列日期。A中a_date列 是客户论坛注册日期,B中b_date 列是工作日。
2,A中日期包含B我想通过1, a_date中每一个日期在b_date中的位置x,
2,让x沿着b_date往后取10个工作日M
3,于是,每个a_date中的数都对应一个M M列就是我想要的东西。
怎么办呢?求助求助
2,A中日期包含B我想通过1, a_date中每一个日期在b_date中的位置x,
2,让x沿着b_date往后取10个工作日M
3,于是,每个a_date中的数都对应一个M M列就是我想要的东西。
怎么办呢?求助求助
a_date
2546 25900 10091341 20150410 10091341 20150402
2547 14000 10091341 20150422 10091341 20150402
2548 50000 10091342 20150410 10091342 20150402
2549 50000 10091342 20150422 10091342 20150402
2550 50000 10091342 20150415 10091342 20150402
2551 50000 10091342 20150409 10091342 20150402
2552 2000 10091347 20150403 10091347 20150402
2553 3000 10091347 20150402 10091347 20150402
2554 2000 10091347 20150416 10091347 20150402
2555 5000 10091347 20150414 10091347 20150402
2556 10000 10091347 20150422 10091347 20150402B表截取一部分如下 : 是工作日
1 20160104
2 20160105
3 20160106
4 20160107
5 20160108
6 20160111
7 20160112
8 20160113
9 20160114
10 20160115
11 20160118
12 20160119
13 20160120
我想让a_date 沿着B的顺序,加十天。
例如,a_date 为20160106的话,那么先找到它在B中的位置:3,
再往后算十个工作日,也就是B中的位置13, 20160120
20160120 就是我要的数据
把这个数据排列到A中的a_date后边。
a_date
2546 25900 10091341 20150410 10091341 20150402
2547 14000 10091341 20150422 10091341 20150402
2548 50000 10091342 20150410 10091342 20150402
2549 50000 10091342 20150422 10091342 20150402
2550 50000 10091342 20150415 10091342 20150402
2551 50000 10091342 20150409 10091342 20150402
2552 2000 10091347 20150403 10091347 20150402
2553 3000 10091347 20150402 10091347 20150402
2554 2000 10091347 20150416 10091347 20150402
2555 5000 10091347 20150414 10091347 20150402
2556 10000 10091347 20150422 10091347 20150402B表截取一部分如下 : 是工作日
1 20160104
2 20160105
3 20160106
4 20160107
5 20160108
6 20160111
7 20160112
8 20160113
9 20160114
10 20160115
11 20160118
12 20160119
13 20160120
我想让a_date 沿着B的顺序,加十天。
例如,a_date 为20160106的话,那么先找到它在B中的位置:3,
再往后算十个工作日,也就是B中的位置13, 20160120
20160120 就是我要的数据
把这个数据排列到A中的a_date后边。
(a_date)
VALUES
(a_date +
(SELECT b_date
FROM TABLE_B
WHERE b.rowid = (SELECT b.rowid + 10
FROM TABLE_A a, TABLE B b
WHERE a.a_date = (+) b.b_date
AND a_date = '20160106')))
(a_date)
VALUES
(a_date +
(SELECT b_date
FROM TABLE_B
WHERE b.rowid = (SELECT b.rowid + 10
FROM TABLE_A a, TABLE B b
WHERE a.a_date = (+) b.b_date
AND a_date = '20160106'))) WHERE a_date = '20160106'
刚才忘了加条件。sorry
对了哥,那个'20160106' 只是一个举例,我要所有的 a-date 都沿着b-date 往上加10个工作日,这个咋搞的
写个函数吧。 具体的格式不会的话可以百度。如果不用函数的纯sql 应该也有,但是我不会写
from(
select c.a_date,b.rowid+10 rowid
from
(
select a.a_date
from a ) c
left join b
on b.b_date=c.a_date ) d
left join b as t on t.rowid= d.rowid
不建议使用 rowid + 10 这样的语法,中间可能存在跳号的现象;
不建议使用 rowid + 10 这样的语法,中间可能存在跳号的现象;确实是欠考虑了