मैं एक मेज है कि इस तरह दिखता है:एसक्यूएल सर्वर: सशर्त कुल;
Year Value
-----------------
2013 -0.0016
2014 -0.0001
2015 0.0025
2016 -0.0003
2017 0.0023
2018 0.0002
और मैं एक सशर्त कुल कि एक नया स्तंभ में परिणाम प्रदर्शन करने की जरूरत है। निम्नानुसार स्थितियां हैं:
यदि मान ऋणात्मक है तो एकत्रीकरण शुरू होता है और मूल्य सकारात्मक होने तक नहीं रुकता है। तो फिर कुछ भी नहीं जब तक मूल्य फिर से नकारात्मक है ... परिणाम इस तरह दिखेगा:
Year Value AggCol
2013 -0.0016 -0.0016
2014 -0.0001 -0.0017
2015 0.0025 0.0008
2016 -0.0003 -0.0003
2017 0.0023 0.002
2018 0.0002 0.0002
यह यूडीएफ के रूप में करीब है के रूप में मैं मिल गया है:
create function dbo.fn(@cYear numeric, @rate float)
returns float
as
begin
declare @pYear numeric
declare @return float
set @pYear = @cYear - 1
set @return = (select
case
when Value < 0 and @rate > 0 then null
when Value < 0 then Value + @rate
else @rate
end
from Table1
where [year] = @pYear)
return @return
end
मैं सी # में एक जवाब के साथ ठीक हूँ अगर यह आसान होगा लेकिन एसक्यूएल पसंद करेंगे। मेरे द्वारा किए गए फ़ंक्शन के साथ समस्या यह है कि मुझे मूल्य को सकारात्मक होने पर मूल्य में जोड़ने के लिए पिछली पंक्ति से परिणामों को पकड़ने में सक्षम होना चाहिए।
मैं यहाँ सुराग और कोई खुशी के लिए खोज पर सारी रात ...
संपादित था: तो भाकपा मूल्यों के रूप में इन के बारे में सोच के लिए साल आपके वाहक द्वारा अपने सेलफोन बिल को लागू किया जा करने के लिए ... वे केवल सीपीआई द्वारा आपके बिल को बढ़ाने जा रहे हैं, और इसे कभी कम नहीं करते हैं (यदि सीपीआई नकारात्मक है) ... लेकिन चालू वर्ष सीपीआई सकारात्मक होने पर वे पिछले वर्षों के नकारात्मक सीपीआई को ऑफसेट करेंगे (या योग परिणाम एक सकारात्मक में) ...
जो मदद कर सकता है या नहीं भी हो सकता है लेकिन यह स्थिति है।
SQL सर्वर का कौन सा संस्करण आप उपयोग कर रहे हैं? –
आप SQL सर्वर में किसी क्वेरी का उपयोग करके ऐसा कर सकते हैं, लेकिन इसके लिए रिकर्सिव सीटीई की आवश्यकता है। –
2012 और मैं सीटीई के साथ ठीक हूं ... डीबीओ एक्सेस है, इसलिए कुछ भी आवश्यक कर सकते हैं। – user3486773