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

प्रीवोयस पंक्ति डेटा के आधार पर एक एसक्यूएल तालिका में स्वत:गणना कॉलम

धारणा

1.आपकी टेबल संरचना इस प्रकार है

Date | In Stock | Out Stock

2.आप एक नए कॉलम डालेंगे balance . की गणना करने से पहले ।

3.दिनांक एक Primary Column है (अद्वितीय + पूर्ण नहीं )

उपरोक्त धारणाओं को लेते हुए:

आपने एक SP . बना लिया है यदि आप C# . में उपयोग करना चाहते हैं

1.एक अस्थायी तालिकाCreate बनाएं और असाइन किया गया Row Number रैंक () . का उपयोग करके

select 
rank() OVER (ORDER BY [Date]) as [Rank],
t1.[Date],
t1.[in stock],
t1.[out stock]
--,t1.[in stock]-t1.[out stock] balance
into #temp1
from (your table name)
;

2.अब आप उपरोक्त temp table का उपयोग कर रहे होंगे शेष राशि . प्राप्त करने के लिए

WITH x AS
(
    SELECT 
        [Rank],
        [Date],
        [in stock],
        [out stock],
        bal=([in stock]-[out stock])
    FROM #temp1
    WHERE [Rank] = 1
    UNION ALL
    SELECT 
        y.[Rank],
        y.[Date],
        y.[in stock],
        y.[out stock],
        x.bal+(y.[in stock]-y.[out stock])
    FROM x INNER JOIN #temp1 AS y
    ON y.[Rank] = x.[Rank] + 1
)
SELECT 
    [Date],
    [in stock],
    [out stock],
    Balance = bal
FROM x
ORDER BY Date
OPTION (MAXRECURSION 10000);

यह रहा SQL Fiddle जहां आप सत्यापित कर सकते हैं।



  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 सर्वर में CONTEXT_INFO का दायरा क्या है?

  2. डेटाटाइम कॉलम को वर्ष, महीने और सप्ताह में विभाजित करना

  3. SQL सर्वर में डेटाबेस पर परिवर्तन डेटा कैप्चर (सीडीसी) को अक्षम कैसे करें - SQL सर्वर ट्यूटोरियल

  4. एंटिटी फ्रेमवर्क 6 ट्रांजेक्शन रोलबैक

  5. SSRS:प्रत्येक पंक्ति पर टैबलिक्स बाईं-सबसे पंक्ति समूह मान दोहराएं