Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ЧИСТВНДОХ() на TSQL  [new]
Гость я...
Guest
Господа, есть в Экселе замечательная функция ЧИСТВНДОХ(), может есть у кого реализация на SQL?
28 апр 10, 12:24    [8701364]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
Гость я...
Господа, есть в Экселе замечательная функция ЧИСТВНДОХ(), может есть у кого реализация на SQL?
Типа, все должны быть в курсе, что же эта замечательная функция делает в экселе?
28 апр 10, 12:24    [8701370]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Гость я...
Guest
Не вижу смысла обяснять, да и не могу точно, это для тех кто знает...
28 апр 10, 12:49    [8701553]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10240
Блог
Гость я...
Не вижу смысла обяснять, да и не могу точно, это для тех кто знает...


скорее всего вы тогда форумом ошиблись
28 апр 10, 12:53    [8701604]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Glory
Member

Откуда:
Сообщений: 104764
Гость я...
Не вижу смысла обяснять, да и не могу точно, это для тех кто знает...

Конкурсы на угадывание того, что вам нужно, проводите, пожалуйста в другом месте
28 апр 10, 12:56    [8701626]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Гость я...
Guest
Эта функция используется для расчета эффективной доходности, формулы я к сож не знаю, но нужно реализовать ее на SQL...
Вот и спрашиваю, может кто делал реализацию на SQL?
28 апр 10, 13:05    [8701691]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Supra93
Member

Откуда:
Сообщений: 8175
Гость я...
формулы я к сож не знаю, но нужно реализовать ее на SQL...

http://office.microsoft.com/ru-ru/excel/HP052093411049.aspx
28 апр 10, 13:11    [8701764]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
phyx
Member

Откуда: Москва
Сообщений: 60
Гость я...,

а почему именно на TSQL?
28 апр 10, 13:16    [8701816]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Гость я...
Guest
Могу добавить что в oracle эта функция называется XIRR, а в MS SQL я не нашел ничего подобного...
Не обязательно на SQL, можно на любом языке, а я уж переведу...
28 апр 10, 13:27    [8701945]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
T-SQL - это не язык программирования, не надо его сравнивать с PL-SQL.
вы явно не в тот форум зашли
28 апр 10, 13:29    [8701967]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10240
Блог
Гость я...
Вот и спрашиваю, может кто делал реализацию на SQL?


http://westclintech.com/Documentation/XLeratorDBfinancialDocumentation/tabid/64/topic/XIRR/Default.aspx
28 апр 10, 13:30    [8701979]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
Интересно, а на какой форум нужно обращаться, чтобы найти готовый t-sql скрипт...
28 апр 10, 13:35    [8702010]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2635
USE [DWH2]
GO
/****** Object: UserDefinedFunction [IRR].[irr] Script Date: 04/28/2010 13:39:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [IRR].[irr] ( @ACCOUNT_RK varchar(30), @d datetime )
RETURNS float
as
BEGIN
DECLARE @irrPrev float set @irrPrev = 0
DECLARE @irr float set @irr = 0.1
DECLARE @pvPrev float
DECLARE @pv float
DECLARE @i int set @i = 0
DECLARE @irrEND float set @irrEND = 0

SET @pvPrev = ( SELECT sum(CF)
FROM STG2.IRR.Stream_of_Payment_IRR
WHERE ACCOUNT_RK = @ACCOUNT_RK)
if @pvPrev<0 return NULL

SET @pv = ( SELECT SUM(CF/power(1e0+@irr,cast(DATE-@d as float)/360e0))
FROM STG2.IRR.Stream_of_Payment_IRR
WHERE ACCOUNT_RK = @ACCOUNT_RK )

if @pv = @pvPrev return NULL

WHILE abs(@pv) >= 0.00000000001 OR @i<=200000
begin
declare @t float
set @t = @irrPrev
set @irrPrev = @irr
set @irr = @irr + (@t-@irr)*@pv/(@pv-@pvPrev)

if ABS(@irr - @irrEND)<= 0.00000000001 return @irr

set @irrEND = @irr
set @pvPrev = @pv
set @i = @i+1
set @pv = ( select sum(CF/power(1e0+@irr,cast(DATE-@d as float)/365e0))
from STG2.IRR.Stream_of_Payment_IRR
where ACCOUNT_RK = @ACCOUNT_RK)
if @pv=@pvPrev return @irr
if @irr>10 return NULL
end
return @irr

END
28 апр 10, 13:40    [8702046]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Гость я...
Guest
Спасибо тем кто понял!!! _Александр_ особое спасибо!!!!
28 апр 10, 13:46    [8702069]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: ЧИСТВНДОХ() на TSQL  [new]
Hamber
Member

Откуда: Москва
Сообщений: 310
--__Александр__-- , к вам вопрос по вашему коду по процедуре.

В качестве переменной @d что передается? Что за дата?
24 авг 11, 11:00    [11169465]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23903
ОФФ: что-то последнее время сильно популярно стало занятие некропостингом...
24 авг 11, 11:07    [11169539]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: ЧИСТВНДОХ() на TSQL  [new]
studieren
Member

Откуда: Tashkent, Uzbekistan
Сообщений: 2834
Вот здесь готовое рабочее решение:
SQL Server XIRR Function
Правда есть не большая ошибка там на 34-строке функции: нужно убрать нижнее подчёркивание "_" в конце строки.

P.S. Вдруг кому-то пригодится.
27 ноя 19, 04:08    [22026208]     Ответить | Цитировать Сообщить модератору
 Re: ЧИСТВНДОХ() на TSQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
studieren,

имо решение элементарно - написать CLR агрегатную функцию.
27 ноя 19, 11:17    [22026427]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить