Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

तालिका में इस तरह से कैसे शामिल हों कि प्रत्येक रिकॉर्ड पिछले रिकॉर्ड से जुड़ जाए?

एक विकल्प एक पुनरावर्ती सीटीई का उपयोग करना है (यदि मैं आपकी आवश्यकताओं को सही ढंग से समझ रहा हूं):

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

SQL Fiddle Demo

यदि आपको प्रतिशत परिवर्तन के रूप में उपयोग करने के लिए प्रत्येक प्रतीक के लिए एक रनिंग टोटल की आवश्यकता है, तो उस राशि के लिए एक अतिरिक्त कॉलम जोड़ना काफी आसान है - पूरी तरह से सुनिश्चित नहीं था कि आपके इरादे क्या थे, इसलिए उपरोक्त वर्तमान बंद राशि को विभाजित करता है पिछली बंद राशि।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर ने घटक 'ओले ऑटोमेशन प्रक्रियाओं' की प्रक्रिया 'sys.sp_OACreate' तक पहुंच को अवरुद्ध कर दिया

  2. आप SQL सर्वर लेनदेन लॉग को कैसे साफ़ करते हैं?

  3. मैं अपनी क्वेरी से SQL डेटा प्रकार कैसे वापस कर सकता हूं?

  4. स्पॉटलाइट ट्यूनिंग पैक बेसिक:बेस्ट फ्री SQL ऑप्टिमाइज़ेशन टूल

  5. PHP का उपयोग कर SQL सर्वर में स्ट्रिंग्स से कैसे बचें?