|
Заменить курсор
|
|||
---|---|---|---|
#18+
Есть таблица #debt_period_client в которой задолженности клиентов по отгрузкам на определённую дату суммированы по ответственному сотруднику и периоду просрочки: Код: sql 1. 2. 3. 4. 5. 6. 7.
Код: 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.
Поле [debt_amount] = [debt_amount_real] на данном этапе Поле [period_id] ссылается на такую таблицу: period_idperiod_dscrdays_startdays_end1до 3 дней0323-7 дней3737-15 дней715415-30 дней1530530-60 дней30606больше 60 дней6010000 Кроме того, у этих же клиентов могут быть предоплаты по другим заказам - таблица #client_debt_prepaiment Код: sql 1. 2. 3. 4. 5. 6. 7.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Нужно написать скрипт, чтобы скорректировать задолженность клиентов с учётом предоплаты. Если у клиента есть предоплата - разнести эту сумму по периодам задолженности, начиная с более старого. Результат - в поле [debt_amount_real] Например, клиент 01 , Дата - 2021-09-01 Задолженности: report_dateperiod_idmanagerid_1cdebt_amountdebt_amount_real01.09.20214Менеджер 101250002500001.09.20213Менеджер 101300003000001.09.20212Менеджер 1011000010000 Предоплата: report_datemanagerid_1cprepaid_amount2021-09-01Менеджер 10140000.00 Результат должен быть: report_datemanagerid_1cperiod_iddebt_amountdebt_amount_real2021-09-01Менеджер 101210000.0010000.002021-09-01Менеджер 101330000.0015000.002021-09-01Менеджер 101425000.000.00 Я ничего не смог придумать лучше, чем сделать курсор в курсоре: первый курсор перебирает предоплаты и изменяет таблицу задолженностей вторым курсором: Код: 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. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93.
Сорри за простыню Буду признателен, за более оптимальный вариант с "табличным" расчётом ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 11:20 |
|
Заменить курсор
|
|||
---|---|---|---|
#18+
Разучить накопительный итог. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 11:22 |
|
Заменить курсор
|
|||
---|---|---|---|
#18+
Alex_Va, Не классика конечно, но: Код: 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.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 14:27 |
|
Заменить курсор
|
|||
---|---|---|---|
#18+
Oleg_SQL, скорее всего не всегда будет считать корректно... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 14:36 |
|
Заменить курсор
|
|||
---|---|---|---|
#18+
Oleg_SQL, Спасибо Не по всем контрагентам сходится с моим результатом. Постараюсь разобраться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 14:47 |
|
Заменить курсор
|
|||
---|---|---|---|
#18+
Alex_Va, Вот алгоритм, проверял на всех возможных вариантах - работает. @k - меняем (это аналог предоплаты) Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 16:09 |
|
Заменить курсор
|
|||
---|---|---|---|
#18+
Oleg_SQL, Спасибо, что откликнулись Пробую применить Ваш код. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2021, 10:59 |
|
Заменить курсор
|
|||
---|---|---|---|
#18+
Alex_Va Oleg_SQL, Спасибо, что откликнулись Пробую применить Ваш код. Не стейсняйтесь критиковать, здесь форум, мало ли что напишут ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2021, 13:00 |
|
Заменить курсор
|
|||
---|---|---|---|
#18+
Ролг Хупин Alex_Va Oleg_SQL, Спасибо, что откликнулись Пробую применить Ваш код. Не стейсняйтесь критиковать, здесь форум, мало ли что напишут Не постесняюсь спросить ваш вариант ))) Можно на моем примере с 4 строками для простоты понимания. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2021, 14:58 |
|
Заменить курсор
|
|||
---|---|---|---|
#18+
Alex_Va, "Немного" переделал запрос - более краткого кода уже не придумаю. Критике всегда рад. Я критику очень люблю ))) Код: 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.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2021, 10:58 |
|
|
start [/forum/topic.php?fid=46&fpage=14&tid=1684287]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 34ms |
total: | 211ms |
0 / 0 |