2016-02-23 5 views
1

Я сейчас в очень сложной ситуации. Использование MSSQL 2012 Express.Расчет процентов по дате

У меня есть таблица voucher, из которой я извлекаю следующие данные для PARTY A, например.

В следующем результате запроса я получаю все данные успешно, за исключением последнего столбца INTEREST. В последней колонке мне нужно найти INTEREST AMOUNT предыдущей строки BALANCE.

ОБЪЯСНЕНИЕ

PARTY A сделал наш JOBWORK ценность RS. 10000,00 в день 01-01-2016. КОМПАНИЯ CASH платит PARTY A RS 5000,00 на дату 05-01-2016. Итак, в колонке INTEREST, мне нужно рассчитать интерес RS. 10000 в течение 4 дней с предполагаемой процентной ставкой 12%. И так далее.

VOUCHER_NO  VOUCHER_DATE  FROM  TO  DR  CR  BALANCE  INTEREST 
-------------------------------------------------------------------------------------------------------- 
1     01-01-2016   PARTY A  JOBWORK    10000.00 -10000.00 
2     05-01-2016   CASH  PARTY A 5000.00    -5000.00  NEED INTEREST OF 10000.00 HERE 
3     15-01-2016   CASH  PARTY A 4000.00    -1000.00  NEED INTEREST OF 5000.00 HERE 
+0

Вы знаете формулу? –

+0

Измените свой вопрос и укажите желаемые результаты. –

+0

Для Rs 10000 интерес будет 10000 * 0.12 * 4Days/365Days – Hemal

ответ

1

Этот расчет рассчитывается с 365,25 днями в год. Изменение этого числа на то, что вам нужно:

SELECT*INTO #bal FROM(VALUES(1,{d'2016-01-01'},CAST(-10000.00 AS DECIMAL(28,2))),(2,{d '2016-01-05'},CAST(-5000.00 AS DECIMAL(28,2))),(3,{d '2016-01-15'},CAST(-1000.00 AS DECIMAL(28,2))))AS b(vno,dt,bal); 
SELECT 
    *, 
    interest=ROUND((LAG(bal)OVER(ORDER BY vno))*(.12*DATEDIFF(DAY,LAG(dt)OVER(ORDER BY vno),dt)/365.25),2) 
FROM #bal; 
DROP TABLE #bal; 

Результат:

+-----+-------------------------+-----------+------------+ 
| vno |   dt   | bal | interest | 
+-----+-------------------------+-----------+------------+ 
| 1 | 2016-01-01 00:00:00.000 | -10000.00 | NULL  | 
| 2 | 2016-01-05 00:00:00.000 | -5000.00 | -13.140000 | 
| 3 | 2016-01-15 00:00:00.000 | -1000.00 | -16.430000 | 
+-----+-------------------------+-----------+------------+ 
+0

Позвольте мне проверить на моей стороне – Hemal

+0

@Hermal Хм интерес кажется вроде высокого =) Возможно, я не в 10 раз. Моя математика сосет =) –

+0

NO. 1) Вы не можете просто использовать «среднее» значение, вам нужно фактическое количество дней. 2) Вы ** АБСОЛЮТНО ** не можете использовать поплавки в денежных расчетах, так как такие вещи, как '.1', не могут быть представлены точно, между прочим. –

Смежные вопросы