INNER JOIN sederhana harus melakukan trik. Kecuali saya salah paham, yang Anda inginkan adalah total berjalan, benar?
Contoh ini membuat tabel dummy dengan data dummy, lalu menggunakan gabungan dalam untuk total yang berjalan. Dari sudut pandang kinerja, Common Table Expression kemungkinan lebih efisien. Tapi untuk kesederhanaan, bagian dalam bergabung menjadi preferensi saya.
/* 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