|
Накопительный итог
|
|||
---|---|---|---|
#18+
Добрый вечер, коллеги! Прошу помощи в решении такой задачи MSSQL 2012 Есть две таблицы: Приход товаров на склад по месяцам, количество и срок годности товара. IncomeDate IncomeAmount ExpiredDate2020.09.30 2.08 2021.12.312020.10.31 2.08 2021.12.312020.11.30 2.08 2021.12.312020.12.31 2.08 2021.12.312021.01.31 2.08 2021.12.312021.02.28 2.08 2021.12.312021.03.31 2.08 2021.12.312021.04.30 2.08 2021.12.312021.05.31 2.08 2021.12.312021.06.30 2.08 2021.12.312021.07.31 2.08 2021.12.312021.08.31 2.12 2021.12.312021.09.30 2.08 2022.12.312021.10.31 2.08 2022.12.312021.11.30 2.08 2022.12.312021.12.31 2.08 2022.12.312022.01.31 2.08 2022.12.31 И есть таблица списаний товара: OutcomeDate OutcomeAmount2020.11.30 12020.12.31 22021.07.31 42021.08.31 42021.09.30 102022.02.28 10 Нужно получить баланс товара на каждый месяц за вычетом списаний и просроченного товара iRowNumber date ExpiredDate IncomeAmount OutcomeAmount IncomeCumulativeAmount OutcomeCumulativeAmount Balance1 2020-09-30 2021-12-31 2.08 NUL 2.08 NULL NULL2 2020-10-31 2021-12-31 2.08 NUL 4.16 NULL NULL3 2020-11-30 2021-12-31 2.08 1.00 6.24 1.00 5.244 2020-12-31 2021-12-31 2.08 2.00 8.32 3.00 5.325 2021-01-31 2021-12-31 2.08 NUL 10.40 3.00 7.406 2021-02-28 2021-12-31 2.08 NUL 12.48 3.00 9.487 2021-03-31 2021-12-31 2.08 NUL 14.56 3.00 11.568 2021-04-30 2021-12-31 2.08 NUL 16.64 3.00 13.649 2021-05-31 2021-12-31 2.08 NUL 18.72 3.00 15.7210 2021-06-30 2021-12-31 2.08 NUL 20.80 3.00 17.8011 2021-07-31 2021-12-31 2.08 4.00 22.88 7.00 15.8812 2021-08-31 2021-12-31 2.12 4.00 25.00 11.00 14.0013 2021-09-30 2022-12-31 2.08 10.0 27.08 21.00 6.0814 2021-10-31 2022-12-31 2.08 NUL 29.16 21.00 8.1615 2021-11-30 2022-12-31 2.08 NUL 31.24 21.00 10.2416 2021-12-31 2022-12-31 2.08 NUL 33.32 21.00 12.3217 2022-01-31 2022-12-31 2.08 NUL 35.40 21.00 10.40null 2022-02-28 NULL NULL 10.0 35.40 31.00 0.40 Пробовал сделать вот так, но не могу понять как правильно вычесть просроченный товар, чтобы он во второй партиции не был включен в итог, сейчас он не включен в итог только первой строки второй партиции. Т.е. в последней строке должно быть 0.4, а не 4.4 Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 23:09 |
|
Накопительный итог
|
|||
---|---|---|---|
#18+
Судя по запросу тут у Вас 3, а не 2 патриции. Также я не понимаю, откуда взялось значение 10.40 в предпоследней строке. Если я правильно понял условие, нужно взять строки, в которых Expired date не меньше, чем date, и вычесть суммарный Outcome из суммарного Income. Взяв строки 13-17 в предпоследней строке получим 0.40. Что-то мне подсказывает, что нужно писать подзапрос (не понимаю, какую сумму Вы сравниваете с 0). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 17:34 |
|
|
start [/forum/topic.php?fid=46&msg=40107813&tid=1684153]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
134ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 224ms |
0 / 0 |