SQL सर्वर में उत्पाद प्राप्त करने के लिए आपके पास दो विकल्प हैं।
<मजबूत>1. लॉग और घातांक का उपयोग करके अनुकरण करें:
create table returns
(
returnDate date,
returnValue float
)
insert into returns values('05/31/06', -0.002271835)
insert into returns values('06/30/06', -0.001095986)
insert into returns values('07/31/06', 0.006984908)
insert into returns values('08/31/06', 0.014865360)
insert into returns values('09/30/06', 0.008938896)
select totalReturn = power
(
cast(10.0 as float)
, sum(log10(returnValue + 1.0))
) - 1
from returns;
with tr as
(
select totalReturn = power
(
cast(10.0 as float)
, sum(log10(returnValue + 1.0))
) - 1
, months = cast(count(1) as float)
from returns
)
select annualized = power(totalReturn + 1, (1.0 / (months / 12.0))) - 1
from tr;
यह उत्पाद गणना का अनुकरण करने के लिए लॉग और घातांक का लाभ उठाता है। अधिक जानकारी:उपयोगकर्ता परिभाषित कार्य ।
यहां एक मुद्दा यह है कि यह रिटर्न <-100% के लिए विफल हो जाएगा। यदि आप इनकी अपेक्षा नहीं करते हैं तो यह ठीक है, अन्यथा आपको <100% से -100% तक कोई भी मान सेट करने की आवश्यकता होगी।
फिर आप आवश्यकतानुसार वार्षिक रिटर्न प्राप्त करने के लिए इस वास्तविक रिटर्न का उपयोग कर सकते हैं।
<मजबूत>2. CLR के साथ एक कस्टम समुच्चय परिभाषित करें:
देखें किताबें ऑनलाइन ।
आप एक सीएलआर कस्टम फ़ंक्शन बना सकते हैं और फिर इसे अपने प्रश्नों में उपयोग के लिए कुल मिलाकर लिंक कर सकते हैं। यह अधिक काम का है और आपको अपने सर्वर पर सीएलआर को सक्षम करना होगा, लेकिन एक बार यह हो जाने के बाद आप इसे जितना आवश्यक हो उतना उपयोग कर सकते हैं।