使用窗口。表聲明是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