एक विकल्प एक पुनरावर्ती सीटीई का उपयोग करना है (यदि मैं आपकी आवश्यकताओं को सही ढंग से समझ रहा हूं):
WITH RNCTE AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date) rn
FROM quotes
),
CTE AS (
SELECT symbol, date, rn, cast(0 as decimal(10,2)) perc, closed
FROM RNCTE
WHERE rn = 1
UNION ALL
SELECT r.symbol, r.date, r.rn, cast(c.closed/r.closed as decimal(10,2)) perc, r.closed
FROM CTE c
JOIN RNCTE r on c.symbol = r.symbol AND c.rn+1 = r.rn
)
SELECT * FROM CTE
ORDER BY symbol, date
यदि आपको प्रतिशत परिवर्तन के रूप में उपयोग करने के लिए प्रत्येक प्रतीक के लिए एक रनिंग टोटल की आवश्यकता है, तो उस राशि के लिए एक अतिरिक्त कॉलम जोड़ना काफी आसान है - पूरी तरह से सुनिश्चित नहीं था कि आपके इरादे क्या थे, इसलिए उपरोक्त वर्तमान बंद राशि को विभाजित करता है पिछली बंद राशि।