У меня есть следующий сценарий, когда у пользователя есть определенная надбавка, принятая каждый месяц до годовой укупорки.SQL Server работает с балансом с разделом по месяцам
я успешно реализовал это, как показан here
Я споткнулся в проблему, потому что если пользователь получает повышение в течение года ежегодно укупорки должны быть ратифицированы соответственно.
Следующий запрос дал эти результаты. (Использование SQL Server 2012)
SELECT *,
RemainingBalance = AnnualCapping - Sum(amount)
OVER (
partition BY userid, year, annualcapping
ORDER BY userid, year, month)
FROM exampleTx
WHERE userid = 1
AND year = 2015
данных
userId year month monthname name surname annualCapping amount RemainingBalance
1 2015 1 January Joe Black 500,00 40,00 460,00
1 2015 2 February Joe Black 500,00 40,00 420,00
1 2015 3 March Joe Black 500,00 40,00 380,00
1 2015 4 April Joe Black 500,00 40,00 340,00
1 2015 5 May Joe Black 500,00 40,00 300,00
1 2015 6 June Joe Black 500,00 40,00 260,00
1 2015 7 July Joe Black 500,00 40,00 220,00
1 2015 8 August Joe Black 500,00 40,00 180,00
1 2015 9 September Joe Black 1000,00 40,00 **960,00**
1 2015 10 October Joe Black 1000,00 40,00 **920,00**
1 2015 11 November Joe Black 1000,00 40,00 **880,00**
1 2015 12 December Joe Black 1000,00 40,00 **840,00**
В сентябре ежемесячное пособие должно было быть пропорционально оставшихся год.
4 months = 1000 * 4/12 = 333.33
и остающийся остаток 293.33, 253.33, 213.33,173.33
.
Мог ли я достичь этого без изменения годового поля укупорки. т.е. было бы проще, если бы ежегодное ограничение было уменьшено до 333.33
, но это данные, которые у меня есть.
Изменение уценки в предыдущем месяце означало бы, что продвижение имело место. Это может произойти в течение любого месяца. Следовательно, новая укупорка должна быть пропорциональной.
Как вы определяете, когда пользователь получает повышение? это информация в другой таблице? и является ли это правилом для всех пользователей? –
В этом примере добавляется годовая надпись. Это происходит из другой таблицы. Общий файл sql содержит простой пример, с которым можно работать. То же правило для одних и тех же пользователей, – NotForFun
Будут ли всегда последние четыре месяца иметь пропорциональный вычет? –