Как мне ежедневно рассчитывать проценты в SQL Server 2008 с помощью хранимой процедуры? - PullRequest
0 голосов
/ 01 ноября 2010

Обычно я хочу взять свой текущий счет Account.Balance и рассчитывать проценты один раз в день на основе ставки, определенной как Account.InterestRate.

У меня есть таблица «Счет» с (соответствующие столбцы) «Процентные ставки» и «Баланс». Мне нужно, чтобы задание выполнялось каждую ночь (@ полночь?), Которое рассчитывает поле Баланс на основе текущего значения Баланса и Процентной ставки.

Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 01 ноября 2010

Вы можете написать процедуру или просто прямое sql и добавить логику для расчета баланса (должно быть обновление с пересчетом баланса) примерно так -

Update Account Set balance=balance*interest

и затем используйте сервер sql агент для создания заданий (ваш sql), которые будут выполняться ночью ( Примечание : агент SQL Server не будет работать в выпусках Express ... в этом на случай, если вам может понадобиться использовать запланированные задачи на вашем сервере и запустить пакетные (.bat) файлы.)

0 голосов
/ 02 ноября 2010

Я нашел сильный способ сделать это.

По сути, поскольку я не могу редактировать Account.Balance напрямую, я создаю новую запись транзакции для зачисления (или дебетования, если баланс отрицательный) процента, который определяется Account.Balance * Account.Interest_Rate , Расчет, который я использую, прост и хорошо работает для очень простой формы расчета процентов. Однако, если бы я хотел рассчитать это один раз в день, например, для 12,99% годовых, расчет был бы немного другим. Вот примеры обоих.

Чтобы рассчитать базовый дневной процент, настройте задание на ночной запуск в 12:00:00, выполнив следующее:

INSERT INTO [Transaction] ([Account_Id], [Amount], [Trans_Type_Id], [DateTime], [Comment])
SELECT Account_Id, Balance * Interest_Rate, 101, GETDATE(), 'Interest' FROM Account WHERE Interest_Rate <> 0.0000

Это создаст новую транзакцию один раз в день для каждого клиента, у которого Account.Interest_Rate не равно 0,0000%.

Чтобы рассчитать APR, скажем, для счетов типа CreditCard, настройте задание на ежемесячное выполнение 1-го числа каждого месяца в 12:00:00 AM, выполнив следующее:

INSERT INTO [Transaction] ([Account_Id], [Amount], [Trans_Type_Id], [DateTime], [Comment])
SELECT Account_Id, ((Interest_Rate/12) * Balance), 101, GETDATE(), 'Interest' FROM Account WHERE Interest_Rate <> 0.0000 AND Account_Type = 103

(где Account_Type = 103 - это "Кредитная карта")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...