|
Собрать таблицу с расчётом остатка, кредиторская задолженность
|
|||
---|---|---|---|
#18+
Здравствуйте. Есть две таблицы Накладная и Платежи по накладным. Связаны они поклиентно. Требуется создать таблицу, в которой будет остаток погашения. Написал "кривой" алгоритм, который работал только с одним клиентом. Код: 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. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124.
Добавил данных в таблицы для нескольких клиентов, попытался что-то поменять - не вышло. Код: 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. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146.
Может быть есть другие алгоритмы для данного случая, а не пилить два цикла? Возможно рекурсией как-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:22 |
|
Собрать таблицу с расчётом остатка, кредиторская задолженность
|
|||
---|---|---|---|
#18+
Earl11 Может быть есть другие алгоритмы для данного случая, а не пилить два цикла? Возможно рекурсией как-то? Поищите в форуме. И ещё, вместо картинки выложите тестовые данные (с временными таблицами накладной и платежа). Тогда можно будет более предметно говорить, показывать код. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 12:04 |
|
Собрать таблицу с расчётом остатка, кредиторская задолженность
|
|||
---|---|---|---|
#18+
Код: 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.
В ОТВ (обобщённое табличное выражение, оно же common table expressions) ICTE и PCTE к данным в таблицах добавляются столбцы FSum и FSumPay - это нарастающие итоги по накладным и платежам соответственно. Далее в ОТВ CTE для каждой записи из накладной присоединяется набор платежей (через cross apply), которые затрагивают эту накладную (лишние отсекаются). Столбец LagRem это значение столбца Rem из прошлой строки (прошлого платежа). alexeyvg И ещё, вместо картинки выложите тестовые данные (с временными таблицами накладной и платежа). Тогда можно будет более предметно говорить, показывать код. На будущее, старайтесь придерживаться этого совета. Очень неприятно набивать тестовые данные с картинки. Так что обычно люди просто проходят мимо, ибо лень! P.S. В вашем примере на картинке ошибка в столбце SumDoc. Там дважды повторяется 1100, хотя во втором случае должно быть 400. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 15:35 |
|
Собрать таблицу с расчётом остатка, кредиторская задолженность
|
|||
---|---|---|---|
#18+
Sybex, большое Вам спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2020, 17:09 |
|
Собрать таблицу с расчётом остатка, кредиторская задолженность
|
|||
---|---|---|---|
#18+
Поднимая тему снова. Данные немного изменились. Дано первоначальное сальдо, которое требуется погасить платежами и только потом закрывать данные накладные последующими платежами. Код: 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.
Имею таблицу справа, хотелось слева) Реализуемо ли это? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2020, 19:50 |
|
Собрать таблицу с расчётом остатка, кредиторская задолженность
|
|||
---|---|---|---|
#18+
Никто не сможет ответить? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 22:23 |
|
|
start [/forum/topic.php?fid=46&msg=40012341&tid=1685455]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
91ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 182ms |
0 / 0 |