I would take a look at your data model, the sub total will be the based on the expression total for that dimension. If you have data that is against multiple values of your dimension, the value will show against each of them but the overall sub total will only be based on the expression and count once.
Hope that makes sense
You may need to aggregate by your dimension.
Ex. if your expression was sum(Field), it would become sum(aggr(sum(Field), Dimension))
In this way, your partial sums will be equal to the sum of each line.
If you're using a straight table, you have an alternative to keep the same expression and under the Expressions tab select your expression then select the 3rd option in the "total mode" and choose "sum" of rows.
Hope this helps.