--明细科目的借方发生额合计数填入汇总表
update 汇总数据表 set 本期借方发生额合计=
(select SUM(借方金额) from 凭证表 group by 科目代码 having 汇总数据表.科目代码=凭证表.科目代码)
where 科目代码 in (select distinct 科目代码 from 凭证表 where 借方金额 is not null);
--明细科目的贷方发生额合计数填入汇总表
update 汇总数据表 set 本期贷方发生额合计=
(select SUM(贷方金额) from 凭证表 group by 科目代码 having 汇总数据表.科目代码=凭证表.科目代码)
where 科目代码 in (select distinct 科目代码 from 凭证表 where 贷方金额 is not null);
--由明细科目数据逐级汇总得到其上级、上上级……一直到总分类科目
declare
@hz_kemu float,
@hz_j float,
@hz_d float,
@count int;
set @count=(select MAX(级次) from 科目表); --汇总的级数,从末级科目开始一级一级往上汇总
while @count>=2 --外层循环
begin
declare hz_cursor cursor for
select floor(科目代码/100),sum(本期借方发生额合计),sum(本期贷方发生额合计)
from 汇总数据表 group by floor(科目代码/100)
having floor(科目代码/100)>=power(10,2*@count-1);
--声明游标,对查询结果的每一条记录执行下面的语句块(内层循环)
open hz_cursor;
fetch next from hz_cursor into @hz_kemu,@hz_j,@hz_d;
while @@FETCH_STATUS=0
begin