THAM GIA INNER đơn giản nên thực hiện thủ thuật. Trừ khi tôi hiểu lầm bạn, nếu không, những gì bạn muốn là tổng số đang chạy, chính xác không?
Ví dụ này tạo một bảng giả với dữ liệu giả, sau đó sử dụng một phép nối bên trong cho tổng số đang chạy. Từ quan điểm hiệu suất, Biểu thức Bảng Chung có thể hiệu quả hơn. Nhưng vì đơn giản, sự tham gia bên trong của tôi được ưu tiên.
/* 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