add a percentage to an initial value in access

Daniel Serbanescu
Daniel Serbanescu used Ask the Experts™
on
I would like to add a percentage, let's say 10% to each value in a table to the previous value, for example I would like to get the following column:

100 - the first value which is given
110 - which is the first value plus 10%
121 - which is the second value plus 10%
133.1 - which is the third value plus 10%

and so on...
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Bill PrewTest your restores, not your backups...
Top Expert 2016

Commented:
Not clear exactly what you want.  Are you looking for a query that does this in new columns?  New rows?  Or do you want to insert new rows into an existing table?  "and so on..." can't go on forever, so when do you want to stop?


»bp

Author

Commented:
Hi, sorry for not being too specific. I want to update a column in a table where only the first value is set, which is actually an open balance and I want to add the interest for the following rows in the column.

Author

Commented:
the table will be updated monthly with days from the previous month so the calculation must continue. It would normally last for a year.

Author

Commented:
I am already performing a running sum by day in a query for the same table
Pawan KumarDatabase Expert
Awarded 2016
Top Expert 2016

Commented:
can you send some sample data and the expected output.

Author

Commented:
the table looks like this

date (as date) |date (as number) |commission (as number)|balance(number)|

30/06/2017     |42916                     |0                                          |100
01/07/2017     |42917                     |45                                        |      I want here 100 +10% = 110
03/07/2017     |42919                     |12                                        |      I want here 110 +10% = 121
05/07/2017     |42921                     |31                                        |      I want here 121+10% = 131.1
06/07/2017     |42922                     |41                                        |

my query looks like this

date (as number) |commission (as number)|running sum for commission | balance
42916                     |0                                          |0                                                   |100
42917                     |45                                        |45                                                |      I want here 100 +10% = 110
42919                     |12                                        |57                                                 |      I want here 110 +10% = 121
42921                     |31                                        |88                                                 |      I want here 121+10% = 131.1
42922                     |41                                        |121

I either want the column Balance in the table to be updated adding 10% to each value or another column in the query with the same figures
Software Team Lead
Commented:
try write a custom function in a Module, like this:

Function GetValue(v As Double, t As Integer, p As Double) As Double
    For i = 1 To t - 1
        v = v + (v * p)
    Next
    GetValue = v
End Function

Open in new window


and then call your query like:

SELECT  a.*, GetValue( 100 , (select count(*) as cnt from yourTable b where b.id <= a.id), 0.1)  as total_110pct
FROM yourTable as a

Open in new window

Author

Commented:
Thank you Ryan, I can't figure out what should I replace "b" with
Pawan KumarDatabase Expert
Awarded 2016
Top Expert 2016

Commented:
You do not have to replace b, just replace "yourTable" with your table name.

b in the query is an alias.

Author

Commented:
well, I did that in the beginning and when I run the query it asks me for "Enter parameter value b.id" and a.id

Author

Commented:
ok, I finally figured it out. I've replaced id with the date field. Thank you very much, Ryan, and Kumar.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial