ก่อนอื่นให้สร้างตารางที่มีข้อมูลจำลอง ->
Create Table CUMULATIVESUM (id tinyint , SomeValue tinyint)
**Now let put some data in the table**
Insert Into CUMULATIVESUM
Select 1, 10 union
Select 2, 2 union
Select 3, 6 union
Select 4, 10
ที่นี่ฉันกำลังเข้าร่วมตารางเดียวกัน (เข้าร่วมด้วยตนเอง)
Select c1.ID, c1.SomeValue, c2.SomeValue
From CumulativeSum c1, CumulativeSum c2
Where c1.id >= c2.ID
Order By c1.id Asc
ผลลัพธ์ :
ID SomeValue SomeValue
1 10 10
2 2 10
2 2 2
3 6 10
3 6 2
3 6 6
4 10 10
4 10 2
4 10 6
4 10 10
ที่นี่เราไปตอนนี้เพียงรวม Somevalue ของ t2 แล้วเราจะได้ ans
Select c1.ID, c1.SomeValue, Sum(c2.SomeValue) CumulativeSumValue
From CumulativeSum c1, CumulativeSum c2
Where c1.id >= c2.ID
Group By c1.ID, c1.SomeValue
Order By c1.id Asc
สำหรับ SQL SERVER 2012 ขึ้นไป (ทำงานได้ดีขึ้นมาก)
Select c1.ID, c1.SomeValue,
SUM (SomeValue) OVER (ORDER BY c1.ID )
From CumulativeSum c1
Order By c1.id Asc
ผลลัพธ์ที่ต้องการ
ID SomeValue CumlativeSumValue
1 10 10
2 2 12
3 6 18
4 10 28
Drop Table CumulativeSum
ล้าง dummytable