Tuesday, 13 August 2013

How to do a complex calculation as this sample

How to do a complex calculation as this sample

In the stored procedure, I'm having a business like this sample:
ID City Price Sold
1 A 10 3
1 B 10 5
1 A 10 1
1 B 10 3
1 C 10 5
1 C 10 2
2 A 10 1
2 B 10 6
2 A 10 3
2 B 10 4
2 C 10 3
2 C 10 4
What I want to do is:
with each ID, sort by City first
re-calculate Sold with condition: total of Sold not exceed Price.
And the result like this:
ID City Price Sold_Calculated
1 A 10 3
1 A 10 1
1 B 10 5
1 B 10 1 (the last one equal '1': Total of Sold = Price)
1 C 10 0 (begin from this row, Sold = 0)
1 C 10 0
2 A 10 1
2 A 10 3
2 B 10 6
2 B 10 0 (begin from this row, Sold = 0)
2 C 10 0
2 C 10 0
And now, I'm using the Cursor to do this task: Get each ID, sort City,
calculate Sold then, and save to temp table. After finish calculating,
union all temp tables. But it take a long time.
What I know people advise is, DO NOT use Cursor.
So, with this task, can you give me the example (with using select form
where group) to finish? or do we have other ways to solve it quickly?
I understand this task is not easy for you, but I still post here, hope
that there is someone helps me to go through.
I'm very appriciated for your help.
Thanks.

No comments:

Post a Comment