(重新整理)难题!“移动加权平均成本”计算的SQL的写法。(证券成本计价)

leontancfa 2007-12-06 12:24:20
大家好。我在写一个证券买卖纪录和会计系统。如大家平常所见,证券成本的计价是用移动平均成本方法(相对于先进先出和后进先出)来计算仓里的证券的价格。但我尝试写一个查询时,被一个地方絆住了。我知道论坛上有许多做会计系统的高手,希望大家能帮忙指点一下。

背景介绍:这种证券是一个折价证券,也就是该证券以折扣价买入,买入价(字段:仓内成本变动=面值*折扣率)和面值之间的差额是利息收入。所以“面值”可以理解成“数量”,“折扣率”可以理解成单价。

如下表,账户,证券名,交易日,到期日,面值,折扣率是填入的,而需要用到计算移动加权平均成本的字段是:交易日,面值和折扣率。为了简化,面值为正时,交易为买入,为负的是卖出。

账户 证券名 交易日 到期日 面值 折扣率
4602324 HBOs 15-Aug-07 25-Oct-07 $7,500,000.00 0.99
4602324 HBOs 21-Sep-07 25-Oct-07 $10,000,000.00 0.99517
4602324 HBOs 24-Sep-07 25-Oct-07 $10,000,000.00 0.9956
4602324 HBOs 26-Sep-07 25-Oct-07 -$5,000,000.00 0.9958
4602324 HBOs 11-Oct-07 25-Oct-07 $10,000,000.00 0.998


计算出来的字段为:(由于版面宽度,只能分两次贴,不好意思)
现金变动 仓内成本变动 仓内累计面值 仓内累计成本 平均成本
-$7,425,000.00 $7,425,000.00 $7,500,000.00 $7,425,000.00 0.99000
-$9,951,700.00 $9,951,700.00 $17,500,000.00 $17,376,700.00 0.99295
-$9,956,000.00 $9,956,000.00 $27,500,000.00 $27,332,700.00 0.99392
$4,979,000.00 -$4,969,581.82 $22,500,000.00 $22,363,118.18 0.99392
-$9,980,000.00 $9,980,000.00 $32,500,000.00 $32,343,118.18 0.99517

我在另外一个论坛贴上了我的图片和excel示例文件。如需要请来这里下载:
http://www.accessbbs.cn/bbs/viewthread.php?tid=8416&page=1&extra=page%3D1#pid57651

在以上两个表格中,头三行是买入。买入时,仓内成本变动=面值*折扣率,仓内累计面值=sum(面值) where 交易日<=该行的交易日,仓内累计成本=sum(仓内成本变动) where 交易日<=该行的交易日,平均成本=仓内累计成本/仓内累计面值。“沧海内累计面值”和“仓内累计成本的公式都不会因交易种类是买入或卖出而变化,但”仓内成本变动“在卖出时公式会不同,请看下面:

第四行卖出,问题就来了。卖出时,仓内成本变动=的公式要变成面值*该行之前一行的平均成本(第三行的平均成本)。而第三行的平均成本=仓内累计成本/仓内累计面值,所以实际上要引用到第四行之前的“仓内成本变动”这样的两个字段之间(在不同行数)互相引用的sql我想不出来怎么写才好。请大家指教!
...全文
1285 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
leontancfa 2007-12-09
  • 打赏
  • 举报
回复
其实逻辑就是每一次买入,仓内的平均成本都会变,但卖出不会变(那是当然的,因为是从仓内拿一部分出来)。
怎样能用sql写出来是个难题。
HelloWorld_001 2007-12-08
  • 打赏
  • 举报
回复
按照我的理解,是前后行的数据有相关性,数学问题就是解个方程
不知道sql能写出来不?
lag是不行的,lead没用过
Croatia 2007-12-07
  • 打赏
  • 举报
回复
你的逻辑,我是看不下去了。

你要是想参照其他行的数据的话,可以用分析函数lag和lead,
分别来取自己之前或者之后的数据的。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧