在与另一个 table 检查后,在 table 中添加行

Add rows in a table after check it with another table

我有这个 table "Mileage" 和以下数据

user   DateMil        Dist
 10   2014-09-04      102
 10   2014-09-07      250
 15   2014-09-04      180
 15   2014-09-06      135

和另一个 table "Initialization" 具有以下数据

user   DateInit         Init
 10   2014-09-03      12500
 15   2014-09-03      20000

我需要的是获取 table "Initialization" 的最后一个数据,并将其与同一用户的 "Mileage" 的 table 合并,并在其中添加新行"Initialization"的table。结果table应该如下

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)

您可以使用 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

SQL Fiddle Demo here