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列就是我想要的東西。
怎么辦呢?求助求助
uj5u.com熱心網友回復:
樓主給出測驗資料,和你的預期結果;uj5u.com熱心網友回復:
一下第一個表是A表格中截取的一部分,每天的客戶有很多個,他們注冊的時間是a_datea_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 20150402
B表截取一部分如下 : 是作業日
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后邊。
uj5u.com熱心網友回復:
一下第一個表是A表格中截取的一部分,每天的客戶有很多個,他們注冊的時間是a_datea_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 20150402
B表截取一部分如下 : 是作業日
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后邊。
uj5u.com熱心網友回復:
不好意思 那個a_date 沒有對好位置。 a_date 就是A中最后一列。uj5u.com熱心網友回復:
INSERT INTO TABLE_A
(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')))
uj5u.com熱心網友回復:
INSERT INTO TABLE_A
(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
uj5u.com熱心網友回復:
真厲害!! 雖然沒看太懂。對了哥,那個'20160106' 只是一個舉例,我要所有的 a-date 都沿著b-date 往上加10個作業日,這個咋搞的
uj5u.com熱心網友回復:
寫個函式吧。 具體的格式不會的話可以百度。如果不用函式的純sql 應該也有,但是我不會寫
uj5u.com熱心網友回復:
select d.a_date,t.b_date
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
uj5u.com熱心網友回復:
試試看 我感覺應該沒錯了uj5u.com熱心網友回復:
不建議使用 rowid + 10 這樣的語法,中間可能存在跳號的現象;
uj5u.com熱心網友回復:
先 用連接吧b表的值在a表'中的位置 先標記出來,然后 用row_number()over 通過分頁的方式 給 剛才 標記的 位置 下取10行就可以了。uj5u.com熱心網友回復:
學習到了,這個還不會uj5u.com熱心網友回復:
確實是欠考慮了
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/96343.html
標籤:高級技術
上一篇:為什么經常報 ORA-01034: ORACLE not available?
下一篇:存盤程序引數參考問題
