sql 财务科目余额表写法

本文介绍了一个使用SQL语句创建并填充科目表和业务发生表的例子。通过这些表,文章展示了如何进行财务数据的记录及汇总计算。

-->生成测试数据

declare @科目表 table([科目ID] int,[科目编码] nvarchar(10),[科目名称] nvarchar(5))
Insert @科目表
select 1,N'1001',N'现金' union all
select 2,N'1002',N'银行存款' union all
select 3,N'1002-01',N'工商银行' union all
select 4,N'1002-02',N'农业银行' union all
select 100,N'2171',N'应交税金' union all
select 101,N'2171-01',N'应交增值税' union all
select 102,N'2171-01-01',N'进项税额' union all
select 103,N'2171-01-02',N'已交税金' union all
select 104,N'2171-02',N'未交增值税' union all
select 105,N'2171-03',N'应交营业税'
--Select * from @科目表

declare @业务发生表 table([科目ID] int,[年度] Datetime,[月度] int,[借方金额] int,[贷方金额] int)
Insert @业务发生表
select 1,'2008',5,90,10 union all
select 4,'2008',5,20,30 union all
select 102,'2008',5,1,4 union all
select 105,'2008',5,100,200
--Select * from @业务发生表

select
b.科目ID,b.科目编码,b.科目名称,sum(c.借方金额) as [借方金额],sum(c.贷方金额) as [贷方金额]
from
@科目表 a
join
@科目表 b on a.科目编码 like b.科目编码+'%'
join
@业务发生表 c on c.科目ID=a.科目ID
where
a.科目ID in (102,105)
group by b.科目ID,b.科目编码,b.科目名称
/*
科目ID 科目编码 科目名称 借方金额 贷方金额
----------- ---------- ----- ----------- -----------
100 2171 应交税金 101 204
101 2171-01 应交增值税 1 4
102 2171-01-01 进项税额 1 4
105 2171-03 应交营业税 100 200
*/
/*
科目ID 科目编码 科目名称 借方金额 贷方金额
----------- ---------- ----- ----------- -----------
100 2171 应交税金 100 200
105 2171-03 应交营业税 100 200
*/
为啥执行这个SP :CALL SP_FIN_TRIAL_BALANCE_SYNC ( '2025-10-01 10:11:11:100') 总是报错syntax error: invalid column name 'NOW_DATE' CREATE OR REPLACE PROCEDURE SP_FIN_TRIAL_BALANCE_SYNC(now_date in TIMESTAMP) IS BEGIN /* * 存储过程说明:ADD BY sucon 20251008 * 经营沙盘-验机指标:由ODS关联单获取机台信息及关闭信息加载到DWD层 * 代码先清空原有数据,然后全部重插入,并日志记录 */ DECLARE fndLog LOG_TYPE; run_time TIMESTAMP; BEGIN run_time := NOW(); fnd_log_start ('SP_FIN_TRIAL_BALANCE_SYNC','now_date:'||now_date, fndLog); fndLog.last_row_cnt :=SQL %ROWCOUNT; fndLog.descript :='delete from DWD_FIN_TRIAL_BALANCE_F WHERE 条件 删除DWD科目余额所传 “参数日期的前一天的该月 和 参数日期的前一天的上一个月”的数据 ' ; fnd_log_step(fndLog); delete from DWD_FIN_TRIAL_BALANCE_F WHERE (years=EXTRACT(year from TIMESTAMPADD(day, -1,now_date)) AND period=EXTRACT(month from TIMESTAMPADD(day, -1,now_date)) ) /*删除DWD科目余额所传 “参数日期的前一天的该月 和 参数日期的前一天的上一个月”的数据 '*/ OR (years=EXTRACT(year from TIMESTAMPADD(month, -1,TIMESTAMPADD(day, -1,now_date))) AND period=EXTRACT(month from TIMESTAMPADD(month, -1,TIMESTAMPADD(day, -1,now_date))) ); fndLog.last_row_cnt :=SQL %ROWCOUNT; fndLog.descript :=' INSERT INTO DWD_FIN_TRIAL_BALANCE_F ; 获取DWD科目余额所传 “参数日期的前一天的该月 和 参数日期的前一天的上一个月”的数据 '; fnd_log_step(fndLog); INSERT INTO DWD_FIN_TRIAL_BALANCE_F ( COMPANY_CODE, YEARS, PERIOD, ACCOUNT_CODE, ACCOUNT_DESC, END_AMOUNT ) SELECT COMPANY_CODE, YEARS, PERIOD, ACCOUNT_CODE, ACCOUNT_DESC, END_AMOUNT from FIN_TRIAL_BALANCE r WHERE (years=EXTRACT(year from TIMESTAMPADD(day, -1,now_date)) AND period=EXTRACT(month from TIMESTAMPADD(day, -1,now_date)) ) /*删除DWD科目余额所传 “参数日期的前一天的该月 和 参数日期的前一天的上一个月”的数据 '*/ OR (years=EXTRACT(year from TIMESTAMPADD(month, -1,TIMESTAMPADD(day, -1,now_date))) AND period=EXTRACT(month from TIMESTAMPADD(month, -1,TIMESTAMPADD(day, -1,now_date))) ) ; COMMIT; fndLog.last_row_cnt :=SQL %ROWCOUNT; fnd_log_end(fndLog); END; END ;
最新发布
10-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值