簡化一下問題,如下串列,
型別 天數 總天數 序列
A 10 10 1
A 10 10 2
B 10 10 3
A 10 20 4
B 10 10 5
B 10 20 6
B 10 30 7
A 10 40 8
B 10 10 9
A 10 20 10
總天數是計算出來的,即判斷如果型別上一型別為A,那么總天數等于天數
上一型別為B,則總天數=天數+上一天數,并且繼續判斷上上一列的型別,如
過還是B,則總天數=天數+上一天數+上上一天數
各位大神,幫忙寫一個分析函式的sql。
實際業務:由于付息中間存在還本情況,還本時會償還該付息區間內已償付本金的所有利息,例如一筆基金本金1億,
按月付息,每月支付100萬,在某月中償付本金5000萬,那么該天需要插入一筆付息記錄,及5000萬對應的半個月利息25萬。
月底在支付剩余5000萬對應的利息50萬
實際資料:如下表根據起息日排序,判斷型別的上一條資料是否為還本日,如果為還本日,則實際天數=天數+上一行資料的天數,否則等于天數本身
起息日 到期日 型別 天數 實際天數 還本金額 實際金額
2014/3/13 2017/4/10 付息日 1124 1124 0 200000000
2017/4/10 2017/4/29 還本日 19 19 100000000 200000000
2017/4/29 2017/5/26 還本日 27 46 50000000 100000000
2017/5/26 2018/4/10 付息日 319 365 0 50000000
2018/4/10 2019/3/13 到期日 337 337 50000000 50000000
例如:第一條上一行型別欄位資料為空,則實際天數=天數=1124
第二條上一行型別欄位資料為付息日,則實際天數=天數=19
第三條上一行型別欄位資料為還本日,則實際天數=天數+上一行實際天數=27+19=46
第四條上一行型別欄位資料為還本日,則實際天數=天數+上一行實際天數=319+46=319+27+19=365
建表陳述句
create table TEST99
(
LX1 VARCHAR2(10),
VDATE DATE,
MDATE DATE,
TS NUMBER,
HBJE NUMBER,
AMT NUMBER
)
資料
insert into test99 (LX1, VDATE, MDATE, TS, HBJE, AMT)
values ('付息日', to_date('13-03-2014', 'dd-mm-yyyy'), to_date('10-04-2017', 'dd-mm-yyyy'), 1124, 0, 200000000);
insert into test99 (LX1, VDATE, MDATE, TS, HBJE, AMT)
values ('還本日', to_date('10-04-2017', 'dd-mm-yyyy'), to_date('29-04-2017', 'dd-mm-yyyy'), 19, 100000000, 200000000);
insert into test99 (LX1, VDATE, MDATE, TS, HBJE, AMT)
values ('還本日', to_date('29-04-2017', 'dd-mm-yyyy'), to_date('26-05-2017', 'dd-mm-yyyy'), 27, 50000000, 100000000);
insert into test99 (LX1, VDATE, MDATE, TS, HBJE, AMT)
values ('付息日', to_date('26-05-2017', 'dd-mm-yyyy'), to_date('10-04-2018', 'dd-mm-yyyy'), 319, 0, 50000000);
insert into test99 (LX1, VDATE, MDATE, TS, HBJE, AMT)
values ('到期日', to_date('10-04-2018', 'dd-mm-yyyy'), to_date('13-03-2019', 'dd-mm-yyyy'), 337, 50000000, 50000000);
uj5u.com熱心網友回復:
rt 目前可能用lead或者lad函式uj5u.com熱心網友回復:
求助11111uj5u.com熱心網友回復:
不使用游標可以實作嗎轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/99314.html
標籤:基礎和管理
上一篇:oracle 行程被kill
下一篇:Qt+Mysql 插入中文
