sql 科目余额表

2025-03-24 08:38:26
推荐回答(3个)
回答1:

--递归
CREATE OR REPLACE FUNCTION  recursion_func(in_序号 NUMBER) RETURN NUMBER IS
v_sum NUMBER;
v_借方金额 NUMBER;
v_贷方金额 NUMBER;
BEGIN
  SELECT 借方金额,贷方金额 INTO v_借方金额,v_贷方金额 FROM table_name;
  IF in_序号 <= 1 THEN
    v_sum := 期初金额;
  ELSE
    v_sum := recursion_func(in_序号 -1) + v_借方金额 - v_贷方金额;
  END IF;
  RETURN v_sum;
END;
--将上边执行了,再执行下面的,自己修改一下
SELECT 序号,借方金额,方向,贷方金额,recursion_func(序号) FROM table_name

回答2:

SQL不直接支持这种递加的求和方式,可以建临时表,通过游标先算出每行的余额(其实就是有当前记录行前所有历史数据的SUM(借方金额-贷方金额)+期初余额),然后再与你这个表关联,得到你想要的结果。

回答3:

select 科目编码,sum(余额)
from 统计科目余额表
where len(科目编码)=3 and 方向='借'
group by 科目编码