Hi everyone and thanks for your help.
I have the following situation: a table called statements that contains fields id(int), stmnt_date(date), debit(double), credit(double) and balance(double)
I want to calculate the balance following these rules:
The first row balance (chronologically) = debit – credit and for the rest of the rows
current row balance = chronologically previous row balance + current row debit – current row credit
As you can see on the picture above the rows are not arranged by date and that's why I used the word chronologically twice to emphasize on the importance of the stmnt_date value.
Thank you very much for your help.
Best Answer
Assuming that
stmnt_date
has aUNIQUE
constraint, this would be fairly easy with window/analytic functions:Unfortunately, MySQL does not (yet) have implemented analytic functions. You can solve the problem either with strict SQL, by self-joining the table (which should be rather inefficient although working 100%) or by using a specific MySQL feature, variables (which would be quite efficient but you'd have to test it when upgrading mysql, to be sure that the results are still correct and not mangled by some optimization improvement):
With your data, it will result in: