你可以用相關的子查詢來做到這一點。更改AND it.No <= ot.No
到AND it.Date <= ot.Date
如果No
s爲不連續的:
DECLARE @t TABLE
(
No INT ,
Employee CHAR(4) ,
Model CHAR(4) ,
Date DATE ,
Bill CHAR(3) ,
Income MONEY ,
Outcome MONEY
)
INSERT INTO @t
VALUES (1, 'emp1', 'hp', '20140101', '000', 100, 0),
(2, 'emp1', 'dell', '20140101', '000', 100, 0),
(3, 'emp1', 'hp', '20140308', '111', 0, 40),
(4, 'emp3', 'hp', '20140308', '111', 40, 0),
(5, 'emp3', 'hp', '20140408', '222', 0, 20),
(6, 'emp2', 'hp', '20140408', '222', 20, 0),
(7, 'emp1', 'hp', '20140608', '333', 0, 5),
(8, 'emp2', 'hp', '20140608', '333', 5, 0),
(9, 'emp1', 'dell', '20150101', '444', 0, 40)
SELECT * ,
(SELECT SUM(Income - Outcome)
FROM @t it
WHERE it.Model = ot.Model
AND it.Employee = ot.Employee
AND it.No <= ot.No
) AS Result
FROM @t ot
輸出:
No Employee Model Date Bill Income Outcome Result
1 emp1 hp 2014-01-01 000 100.00 0.00 100.00
2 emp1 dell 2014-01-01 000 100.00 0.00 100.00
3 emp1 hp 2014-03-08 111 0.00 40.00 60.00
4 emp3 hp 2014-03-08 111 40.00 0.00 40.00
5 emp3 hp 2014-04-08 222 0.00 20.00 20.00
6 emp2 hp 2014-04-08 222 20.00 0.00 20.00
7 emp1 hp 2014-06-08 333 0.00 5.00 55.00
8 emp2 hp 2014-06-08 333 5.00 0.00 25.00
9 emp1 dell 2015-01-01 444 0.00 40.00 60.00
能否請您編輯您的問題,併發布表中的文本,以便我們可以使用它? – StuartLC 2015-04-06 08:03:26
聽起來就像一個跑步總數。如果是這樣的話,可以提供很多例子。 – 2015-04-06 08:08:35