Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Процедура расчета остаточной задолженности  [new]
Doctormom
Member

Откуда:
Сообщений: 48
Добрый день всем!

Помогите разрешить вот такую проблему.

Есть вот такая таблица с исходными данными:
AccountIDPeriodIDInBalanceCalcPayOutBalace
1110.004672.200.004672.20
1124672.204739.434672.204739.43
1134739.435745.324739.435745.32
4110.002928.910.002928.91
4122928.912491.880.005420.79
4135420.794021.421891.597550.62
42110.003351.240.003351.24
42123351.243042.020.006393.26
42136393.263583.650.009976.91


Необходимо по каждому AccountID рассчитать в обратном порядке остаток неоплаченной задолженности.
Задолженность на текущий момент высчитывается как (InBalace за max(PeriodID) - pay за этот же период.

Например: AccountID = 1, Inbalance = 4739,43 - Pay = 4793.43 = 0 (Задолженность за предыдущие периоды отсутствует не выводим в отчет).

Если рассчитанная задолженность более 0. То в обратном порядке (по PeriodID) отнимаем Calc пока не уйдем в минус или не рано 0.
Задолженность за период не может быть более Calc.

Например AccountID = 4. Задолженность = 3529,2 (5420,79 - 1891,59). Далее отнимаем Calc за PeriodID=12. (3529.2 - 2491.88).
Так как разница >0 и задолженность не может быть больше Calc за тот же PeriodID - пишем - 2491.88. Остаток по тому же принципу
распределяем на PeriodID = 11 (1037.37 - 2928.91).Так как результат <0 то берем за задолженность 1037.37

Вот хотелось бы получить вот такой результат:
AccountIDPeriodIDCalcDebt
4112928.911037.32
4122491.882491.88
42113351.243351.24
42123042.023042.02


Извините за возможное сумбурное описание, но уже всю голову сломал как это реализовать. Понимаю что это можно сделать с помощью курсора, но очень не хочу.

Версия сервера.
Microsoft SQL Server 2012 - 11.0.2218.0 (X64)
Jun 12 2012 13:05:25
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)

Заранее благодарен всем за помощь!!!
26 фев 15, 11:38    [17314472]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить