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

TSQL-2008 SUM(X) ओवर (विभाजन ... खंड द्वारा आदेश)

सिंपल इनर जॉइन को ट्रिक करना चाहिए। जब तक मैं आपको गलत नहीं समझ रहा हूँ, आप जो चाहते हैं वह एक रनिंग टोटल है, सही है?

यह उदाहरण डमी डेटा के साथ एक डमी टेबल बनाता है, फिर रनिंग टोटल के लिए इनर जॉइन का उपयोग करता है। प्रदर्शन के दृष्टिकोण से, सामान्य तालिका अभिव्यक्ति अधिक कुशल होने की संभावना है। लेकिन सादगी के लिए, इनर जॉइन माई प्रेफरेंशियल हो।

/* Dummy table */    

create table testing1
(col1 int not null identity(1,1),
col2 varchar(5),
col3 int)


insert into testing1
values ('a', 10), ('a', 20), ('a', 30), ('b', 40), ('b', 50)

/* Running total example */

SELECT a.col1
           , a.col2
           , a.col3
           , SUM(b.col3) AS total

FROM testing1 a INNER JOIN testing1 b
     ON  a.col1 >= b.col1
     AND a.col2 = b.col2

GROUP BY a.col1, a.col2, a.col3
ORDER BY a.col1



/* Edit to include Output */
col1    col2    col3    total
1   a   10  10
2   a   20  30
3   a   30  60
4   b   40  40
5   b   50  90


  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 में दशमलव मान

  2. एंटिटी फ्रेमवर्क कोड-फर्स्ट इनिशियलाइज़र में डेटाबेस संयोजन सेट करें

  3. SQL सर्वर (T-SQL) में 'दिनांक' को 'datetime2' में बदलने के उदाहरण

  4. कैसे ISNUMERIC () SQL सर्वर में काम करता है

  5. SQL में पासिंग पैरामीटर क्या है और मुझे इसकी आवश्यकता क्यों है?