使用窗口。表声明是SQL Server,但其余的是标准的SQL,如果你的RDBMS支持它(SQL Server 2012中,PostgreSQL的9.1等)
DECLARE @t TABLE (ID int IDENTITY(1,1), UserName varchar(100), Point int);
INSERT @t (UserName, Point)
VALUES
('Phil', 1000),
('Phil', 150),
('Phil', 200),
('Mark', 300),
('Mark', 250);
DECLARE @n TABLE (UserName varchar(100), StartPoint int);
INSERT @n (UserName, StartPoint)
VALUES
('Phil', 350),
('Mark', 100);
SELECT
T.ID, T.UserName, T.Point,
N.StartPoint + SUM(Point) OVER(PARTITION BY T.UserName ORDER BY T.ID ROWS UNBOUNDED PRECEDING)
FROM
@n N
JOIN
@t T ON N.UserName = T.UserName
ORDER BY
T.ID;
要做到这一点,你需要一个订单表(我用的ID)和一个更好的方式做一个初始值(我使用了一个单独的表格)
来源
2013-06-05 14:10:32
gbn
? –
也发布表结构 – Stephan
您需要一些表格的顺序:请问它是什么? – gbn