我在这张表“Mileage”中有以下数据
user DateMil Dist
10 2014-09-04 102
10 2014-09-07 250
15 2014-09-04 180
15 2014-09-06 135
和另一个表“初始化”,包含以下数据
user DateInit Init
10 2014-09-03 12500
15 2014-09-03 20000
我需要的是获取表“Initialization”的最后一个数据,并将其与“Mileage”表连接到同一个用户,并在“Initialization”表中添加一个新行。结果表应如下所示
user DateInit Init
10 2014-09-03 12500
10 2014-09-04 12602(12500+102=last(init)+Dist)
10 2014-09-07 12852(12602+250)
15 2014-09-03 20000
15 2014-09-04 20180(2000+180)
15 2014-09-06 20315(20180+135)
答案 0 :(得分:2)
您可以使用CTE
将两张原始表中的UNION
放在一起。然后,
如果您使用的是SQL SERVER 2012+,则可以使用SUM
计算运行总计:
;WITH CTE AS (
SELECT [user], DateMil AS DateInit, Dist AS Init
FROM Mileage
UNION
SELECT [user], DateInit, Init
FROM Initialization
)
SELECT [user], DateInit,
SUM(Init) OVER (PARTITION BY [user] ORDER BY DateInit) As Init
FROM CTE