|
вычитывание по очереди до нуля - остаток
|
|||
---|---|---|---|
#18+
попалась мне тут задачка, думал с курсором, но думаю есть и другие варианты :) * совершается иногда покупка на определенную сумму (каждый раз когда покупается создается ячейка/склад) = "Purchase" * совершается со временем продажа = "Sale" - условие, при транзакции Sale, сумма вчитывается сначала с первой покупки пока в той ячейки/склад есть остаток если мало осталось то снимаем до нуля и переходим на следующую ячейку/склад. - надо узнать остаток на время транзакции в каждой ячейки Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
спасибо :) PS: сервер 2016 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 14:59 |
|
вычитывание по очереди до нуля - остаток
|
|||
---|---|---|---|
#18+
zindur, у вас в начале скользящий итог, который удобнее делать оконными функциями Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
кстати для денег float лучше не использовать, decimal для этого есть и TradeDate не содержит достаточной точности для сортировки, так как у вас важен порядок операций и в одну дату может быть несколько операций, которые не поделятся по дате. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 20:43 |
|
|
start [/forum/topic.php?fid=46&msg=39968694&tid=1685984]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 275ms |
total: | 561ms |
0 / 0 |