У меня есть стол account(ID,TransDate,amount,isDebit,balance)
. Очевидно, это упрощенная версия моего стола для ясности. TransDate
- это дата, на которую будет сделана запись, isDebit
- логическое значение, указывающее, является ли эта транзакция ДЕБЕТОМ или КРЕДИТОМ.
A, когда новая запись сделана, она может иметь transDate
старше, чем последняя сделанная запись, поэтому я должен расположить ее в нужном месте и изменить баланс всех строк, которые будут ниже этой позиции. Там я сортирую строки по transDate ASC, по идентификатору ASC, что дает мне правильный порядок записей.
Баланс будет сгенерирован путем добавления текущей суммы к предыдущему последнему идентификатору остатка баланса и вычитается, если текущая запись - КРЕДИТ.
Имеются следующие 5 последних записей sorted by transDate ASC , ID ASC
:
счет (ID, TransDate, сумма, isDebit, баланс) в качестве примера
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>
запрос должен найти, что новая позиция записи находится после строки с идентификатором 41 и перед идентификатором строки 37. и также извлекает строки из Id 41
(, поскольку баланс этой строки будет использоваться для вычисления баланса для новая строка ) и below
, в которой я устанавливаю новые исправленные сальдо.
Или предложите новый метод для реализации этого вида "учета в бухгалтерской книге".