从给定输入创建一个新列作为结束日期,并以相等的分隔金额值
表格提供的
id | 标准日期 | 金额||
---|---|---|---|
C1 | 2020年1月 | 90||
C2 | 2020 | 100||
C3 | 2020年3月 | 60 |
我制作了一个存储过程来实现这一点。只需在调用它时指定id和结束日期,它就会插入到新表中。如果结束日期早于开始日期,则会生成警告。这是我在工作台上写的代码:
delimiter //
drop table if exists n_table//
create table n_table (id varchar(5), stdate date, enddt date, amt int)//
drop procedure if exists divide_row//
CREATE PROCEDURE divide_row (o_id varchar(5),end_date date)
BEGIN
declare counter int default 0;
declare d_diff int;
declare c_id varchar(5);
declare c_stdate date;
declare c_amount int;
select id into c_id from o_table where id=o_id;
select stdate into c_stdate from o_table where id=o_id;
select amount into c_amount from o_table where id=o_id;
set d_diff=datediff(end_date,c_stdate);
if d_diff<0 then
select 'The end_date specified must not be older than the start_date !!' as warning;
else
lp : loop
if counter>d_diff then
leave lp;
end if;
insert n_table values (c_id, adddate(c_stdate,counter),end_date, c_amount/(d_diff+1));
set counter=counter+1;
end loop lp;
end if;
END //
请对此发表评论。