首先要知道首月的期初余额 或 末月的期末余额。(下面的是ORACLE的语法)
1. 知道首月期初余额:期初余额 + 累计净流量
update userid.jkcw_zz set
userid.jkcw_zz.QMYE =
(select 期初余额 + sum(userid.jkcw_zz.JFJE-userid.jkcw_zz.DFYE)
from userid.jkcw_zz a
where a.kjnf <= userid.jkcw_zz.kjnf
and a.kjyf <= userid.jkcw_zz.kjyf)
2. 知道末月期末余额: 期末余额 - 累计净流量
update userid.jkcw_zz set
userid.jkcw_zz.QMYE =
(select 期末余额 - nvl(sum(userid.jkcw_zz.JFJE), 0) +
nvl(sum(userid.jkcw_zz.DFYE), 0)
from userid.jkcw_zz a
where a.kjnf >= userid.jkcw_zz.kjnf
and a.kjyf >= userid.jkcw_zz.kjyf)
1. 知道首月期初余额:期初余额 + 累计净流量
update userid.jkcw_zz set
userid.jkcw_zz.QMYE =
(select 期初余额 + sum(userid.jkcw_zz.JFJE-userid.jkcw_zz.DFYE)
from userid.jkcw_zz a
where a.kjnf <= userid.jkcw_zz.kjnf
and a.kjyf <= userid.jkcw_zz.kjyf)
2. 知道末月期末余额: 期末余额 - 累计净流量
update userid.jkcw_zz set
userid.jkcw_zz.QMYE =
(select 期末余额 - nvl(sum(userid.jkcw_zz.JFJE), 0) +
nvl(sum(userid.jkcw_zz.DFYE), 0)
from userid.jkcw_zz a
where a.kjnf >= userid.jkcw_zz.kjnf
and a.kjyf >= userid.jkcw_zz.kjyf)
解决方案 »
- (100分)《Delphi数据库开发关键技术与实例应用》一书的配套光盘
- property 用法
- 这么多种线程怎么协调工作呢,Semaphore WaitFor等好像都用不上。大侠支招,重谢。
- 我提交事务总是提示:cannot perform this operation on a closed database
- 如何判断一个文件夹不存在而建立一个文件夹?
- 小妹初涉程序领域 希望这里的朋友能给我点意见或者建议
- 投诉
- forgot2000的散分帖:推荐一首我比较爱听的MP3,喜欢Twins的朋友可以来下载。
- delphi6的几个小问题,望各位指点....
- 神呀救救我呀!180分(数据库高手请快出手)
- 无何在程序中添加限制单机安装的功能?
- 关于日期的问题!
我认为你这个sql执行后QMYE应该还是空值。
改成这样试试:
update userid.jkcw_zz a set
a.QMYE=(select b.QMYE from userid.jkcw_zz b where b.KJYF=a.KJYF-1)
+a.JFJE-a.DFJE where a.KJYF>1
如果数据跨年度的话,还要把年度条件加进来。
值替换):
update userid.jkcw_zz a set
a.QMYE = (select 期初余额 + (value(sum(b.JFJE),0)-
value(sum(b.DFYE),0))
from userid.jkcw_zz b
where b.kjnf <= a.kjnf
and b.kjyf <= a.kjyf)
如一月份有正确的QMYE,则“期初余额”可用select 获取,并且附加条件
where kjyf > 1
以不更新一月份数据。