我有一张桌子account(ID,TransDate,amount,isDebit,balance)
。显然,为了清楚起见,这是我的表格的精简版。TransDate
是进行输入的日期,isDebit
是一个布尔值,用于判断此交易是借记还是贷记。
A 当创建一个新条目时,它可能transDate
比最后一个条目更旧,因此我必须将其放置在正确的位置并更改将低于该位置的所有行的余额。在那里,我按 transDate ASC 、 ID ASC 对行进行排序,这给了我正确的条目顺序。
余额将通过将当前金额添加到上一个上一个余额 id 借方来生成,如果当前条目是 CREDIT,则扣除。
它有以下最后 5 个条目sorted by transDate ASC , ID ASC
:
以 account(ID,TransDate,amount,isDebit,balance) 为例
41 | 2011-04-10 | 1000 | 1 | 1000 // as this is the first entry but not always
37 | 2011-05-14 | 7500 | 1 | 8500
39 | 2011-05-14 | 6500 | 0 | 2000
46 | 2011-05-15 | 1000 | 1 | 3000
任何人都可以生成查询:
使用以下详细信息创建新条目:<ID auto> | 2011-05-9 | 1000 | 1 | <balance>
查询应该发现新的条目位置在 ID 41 行之后和 ID 37 行之前。并且还从中获取行Id 41
(因为该行的余额将用于计算新行的余额)并且below
我在其上设置新的更正余额。
或者建议一种新的方法来实现这种“分类账会计”。